首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShinyApp谷歌登录

ShinyApp谷歌登录
EN

Stack Overflow用户
提问于 2016-05-18 17:13:07
回答 2查看 3K关注 0票数 5

我有一个shinyapp,我想启用某些功能的成员谁登录到应用程序使用谷歌登录。我无法在我的应用程序中使用GoogleAuthR包实现谷歌登录和身份验证过程。是否有人有一个示例ShinyApp,允许用户通过google或任何其他社交论坛授权登录?

感谢有代码的演示。

PS:我无意运行Google数据的统计数据,但我只想消除为我的应用程序创建登录模块的麻烦,让Google登录来处理这些麻烦。

谢谢你,SD

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-19 12:47:45

我使用gar_shiny_ui以不同的方式解决了这个问题

  1. 我们需要在服务器中定义UI。
  2. 获取用户信息并从他/她的google登录中提取电子邮件
  3. 使用此电子邮件确定该人是否来自您的组织。
  4. 如果该人员来自您的组织,请显示主UI,否则显示一个UI,其中表示“您无法访问此工具”。 #函数用于获取google用户数据,该用户数据将用于检查用户是否来自您的组织user_info <- function(){ f <- gar_api_generator("https://www.googleapis.com/oauth2/v1/userinfo"," get ",data_parse_function = function(x) x) f()} #UI代码,基于通过服务器代码ui<-uiOutput('myUI') #服务器端代码来完成所有提升服务器=函数(输入,输出,会话){gar_shiny_auth(会话)#检查用户是否已经登录google身份验证gmail=‘jo.doe@unKwown.com’tryCatch({ x<- user_info() gmail=x$email print(gmail) }})print(Gmail)#根据用户来自何处(MyOrg或非)输出$myUI <- renderUI({ if (grepl(@myOrganation.com,gmail){ UI = fluidPage( shinyjs::useShinyjs(),title='Your‘),主题= shinytheme("cerulean"),img(src = "mycompany_logo.png",身高= 200,宽度= 400),sidebarLayout(写任何想写的东西),mainPanel(写任何想写的)} { ui =fluidPage( h4("My Company Data Team Presents",allign="center"),h1("My Tool",allign="center"),) shinyApp(gar_shiny_ui(ui,login_ui = silent_auth),服务器)
票数 3
EN

Stack Overflow用户

发布于 2016-06-21 14:37:39

自述文件中有一个示例,您可以看到它作为一个闪亮的应用程序工作

如果您希望它只是为了登录目的,请查看GoogleID包,它是用googleAuthR构建的,考虑到这一点。

下面是示例代码:

代码语言:javascript
复制
## in global.R
library(googleAuthR)
library(shiny)

options(googleAuthR.scopes.selected = "https://www.googleapis.com/auth/urlshortener")
options(googleAnalyticsR.webapp.client_id = "YOUR_PROJECT_KEY")
options(googleAnalyticsR.webapp.client_secret = "YOUR_CLIENT_SECRET")

shorten_url <- function(url){

  body = list(
    longUrl = url
  )

  f <- gar_api_generator("https://www.googleapis.com/urlshortener/v1/url",
                         "POST",
                         data_parse_function = function(x) x$id)

  f(the_body = body)

}

## server.R
source("global.R")

server <- function(input, output, session){

  ## Create access token and render login button
  access_token <- callModule(googleAuth, "loginButton")

  short_url_output <- eventReactive(input$submit, {
    ## wrap existing function with_shiny
    ## pass the reactive token in shiny_access_token
    ## pass other named arguments
    with_shiny(f = shorten_url, 
               shiny_access_token = access_token(),
               url=input$url)

  })

  output$short_url <- renderText({

    short_url_output()

  })
}

## ui.R
ui <- fluidPage(
  googleAuthUI("loginButton"),
  textInput("url", "Enter URL"),
  actionButton("submit", "Shorten URL"),
  textOutput("short_url")
)


### If the above global.R, server.R and ui.R files are in folder "test" like so:
## /home
##    |->/test/
##            /global.R
##            /ui.R
##            /server.R
##
## Port 1221 has been set in your Google Project options as the port to listen to
## as explained in authentication setup section
## run below in /home directory
shiny::runApp("./test/", launch.browser=T, port=1221)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37306169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档