Shiny Google Authorisation [Server Module]
Server part of shiny module, use with googleAuthUI
googleAuth(
input,
output,
session,
login_text = "Login via Google",
logout_text = "Logout",
login_class = "btn btn-primary",
logout_class = "btn btn-default",
access_type = c("online", "offline"),
prompt = c("consent", "select_account", "both", "none"),
revoke = FALSE
)input |
shiny input |
output |
shiny output |
session |
shiny session |
login_text |
What the login text will read on the button |
logout_text |
What the logout text will read on the button |
login_class |
The CSS class for the login link |
logout_class |
The CSS class for the logout link |
access_type |
Online or offline access for the authentication URL |
prompt |
What type of consent screen on authentication |
revoke |
If TRUE a user on logout will need to re-authenticate |
Call via shiny::callModule(googleAuth, "your_ui_name", login_text = "Login")
In some platforms the URL you are authenticating from will not match the Docker container the script is running in (e.g. shinyapps.io or a kubernetes cluster) - in that case you can manually set it via 'options(googleAuthR.redirect = http://your-shiny-url'). In other circumstances the Shiny app should be able to detect this itself.
A reactive authentication token
Other shiny module functions:
googleAuthUI()
## Not run:
options("googleAuthR.scopes.selected" =
c("https://www.googleapis.com/auth/urlshortener"))
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 <- function(input, output, session){
## Create access token and render login button
access_token <- callModule(googleAuth,
"loginButton",
login_text = "Login1")
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
ui <- fluidPage(
googleAuthUI("loginButton"),
textInput("url", "Enter URL"),
actionButton("submit", "Shorten URL"),
textOutput("short_url")
)
shinyApp(ui = ui, server = server)
## End(Not run)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.