从R Shiny应用程序调用Firebase身份验证UI

时间:2019-12-12 11:07:19

标签: javascript r firebase shiny firebase-authentication

从R Shiny应用程序调用Firebase身份验证用户界面

我正在尝试从Shiny应用程序中调用Firebase身份验证UI。目的是在Shiny with Firebase中进行基本授权。

以下是文件夹结构

├──  ui.R
├──  server.R
├──  global.R
├──  www 
    ├──  fire-auth-sign-in.js
    ├──  firebase-console-config.js
    ├──  firebase-ui-auth.css
    ├──  firebase-ui-auth.js //Firebase's own authentication js file
├──  ui
    ├── successfulRegistration
    ├── sign-in.R

global.R

library(shiny)
library(shinyjs)
library(DT)

server.R

function(input, output, session) {
  ##### App for signed in user
  signed_in_user_df <- reactive({
    req(session$userData$current_user())        
    out <- session$userData$current_user()
    out <- unlist(out)        
    data.frame(
      name = names(out),
      value = unname(out)
    )
  })      
  output$user_out <- DT::renderDT({
    datatable(
      signed_in_user_df(),
      rownames = FALSE,
      options = list(
        dom = "tp",
        scrollX = TRUE
      )
    )
  })
}

ui.R

fluidPage(
  shiny::singleton(
    shiny::tags$head(

      tags$script(src="https://www.gstatic.com/firebasejs/7.5.2/firebase-app.js"),
      tags$script(src="https://www.gstatic.com/firebasejs/7.5.2/firebase-auth.js"),

      shiny::tags$script(src="firebase-ui-auth.js"),
      shiny::tags$link(rel = "stylesheet", href="firebase-ui-auth.css"), 

      shiny::tags$script(src="fire-auth-sign-in.js"), # UI loader
      shiny::tags$script(src="firebase-console-config.js") #Firebase app configuration copied from firebase console

    )
  ),

  tags$script("firebase.initializeApp(firebaseConfig);"),

  source("ui/sign-in.R", local = TRUE)$value,

  source("ui/successfulRegistration.R", local = TRUE)$value
)

fire-auth-sign-in.js

// Initialize the FirebaseUI Widget using Firebase.
var ui = new firebaseui.auth.AuthUI(firebase.auth());


var uiConfig = {
  callbacks: {
    signInSuccessWithAuthResult: function(authResult, redirectUrl) {
      // User successfully signed in.
      return true;
    },
    uiShown: function() {
      document.getElementById('loader').style.display = 'none';
    }
  },
  signInSuccessUrl: 'github.com',
  signInOptions: [
    firebase.auth.EmailAuthProvider.PROVIDER_ID,
    firebase.auth.PhoneAuthProvider.PROVIDER_ID
  ],
  // Terms of service url.
};

// Finally, render the FirebaseUI Auth interface:    
ui.start('#firebaseui-auth-container', uiConfig);

ui.R和我的fire-auth-sign-in.js之间,我无法创建正确的连接,因为用户界面一开始就不会加载。你能告诉我该怎么做吗?

0 个答案:

没有答案