我正在尝试将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] 删除。
我来说两句