作者:kingkongkoil | 来源:互联网 | 2023-09-06 22:52
从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
之间,我无法创建正确的连接,因为用户界面一开始就不会加载。你能告诉我该怎么做吗?