R-使用GoogleSignIn和ObserveEvent

时间:2018-12-21 17:23:35

标签: r shiny google-authentication

我正在尝试将Google登录添加到Shiny App。我正在使用googleAuthR软件包进行签名,并且我想在用户单击“登录”时触发一些事件。但是,当我单击“登录”按钮时,并没有触发ObserveEvent。

下面是一个代码示例。当我单击“登录”时,我希望打印出“此作品”。

library(shiny)
library(googleAuthR)

options(shiny.port=3694)
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) })

  observeEvent(input$demo, {
    print(paste("This works!"))
  })

}

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

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您需要observeEvent以某种方式依赖于sign_ins()反应性,因此带有observe()的{​​{1}}可以满足您的要求。 req()是模块名称,而不是模块内的输入,因此不会给您发出工作的信号。下面的作品:

input$demo