R-使用GoogleSignIn和ObserveEvent

卡尔乔汉贾

我正在尝试将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)

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

市场

您需要observeEvent以某种方式依赖于sign_ins()反应式,因此observe()使用req()可以实现您所要求的。input$demo是模块名称,而不是模块中的输入,因此不会给你一个信号,从工作。下面的作品:

library(shiny)
library(googleAuthR)

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

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) })

  observe({
    req(sign_ins()$name)

    print("This works")

  })

}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章