0

我使用googleAuthR闪亮的包,如果他们没有登录,我想提醒用户,如果他们成功登录,我还想保存用户的谷歌 ID。但是 sign_ins() 是被动的消费者,我不能这样做。有什么建议么?

library(shiny)
library(googleAuthR)
library(shinyWidgets)

options(googleAuthR.webapp.client_id = "**********************")

ui <- fluidPage(
    
    titlePanel("Sample Google Sign-In"),
    
    sidebarLayout(
      sidebarPanel(
        googleSignInUI("demo")
      ),
      
      mainPanel(
        with(tags, dl(dt("Name"), dd(textOutput("g_name")),
                      dt("Email"), dd(textOutput("g_email")),
                      dt("Image"), dd(uiOutput("g_image")) ))
      )
    )
  )

server <- function(input, output, session) {
  
  sign_ins <- shiny::callModule(googleSignIn, "demo")
  
  output$g_name = renderText({ sign_ins()$name })
  output$g_email = renderText({ sign_ins()$email })
  output$g_image = renderUI({ img(src=sign_ins()$image) })
  
  if(is.null(sign_ins())){
    shinyWidgets::show_alert(title = "not log in",
                             
                             type = NULL,
                             btn_labels = "Ok")
  else{
      write.csv(sign_ins(),"file.csv")
      }

  }
}

# Run the application 
shinyApp(ui = ui, server = server)
4

1 回答 1

0

我不熟悉,googleAuthR但 R 中的每个 google-api 产品很可能具有“*_has_token”功能来验证会话中是否记录了活动凭据。我检查了googleAuthR包装,我认为你可以使用googleAuthR::gar_has_token(). 所以而不是

 if(is.null(sign_ins())) {...}

您可以使用

if(googleAuthR::gar_has_token() == FALSE){...}

检查是否有有效的凭据并执行您的操作。希望这有帮助

于 2022-01-06T10:07:33.847 回答