Search code examples
rhttp-redirectshinyhttr

Redirect in Shiny app


I'm trying to make my Shiny app to redirect the user to another page. I'm using httr to send GET requests and see if the user is logged in. If he's not, I want to redirect him to another link.

Can I do that using R / Shiny only, or do I need some extra libraries?

sample:

library(httr)
library(shiny)
shinyServer(function(input, output) {
rv <- reactiveValues()
rv$mytoken = session$request$token

observeEvent(input$button1, {
  rv$a <- GET("my.url:3405/authtoken", 
              add_headers(
                .headers = c("token" = rv$mytoken)
              ))
  if (rv$a$status_code == 200) {
  } else {
    # redirect magic
  }
})
}

shinyUI(fluidPage(
  actionButton(button1, "btn")
))

Solution

  • Here this will navigate you to google if not true

    library(shiny)
    
    jscode <- "Shiny.addCustomMessageHandler('mymessage', function(message) {window.location = 'http://www.google.com';});"
    
    ui <- fluidPage(
      tags$head(tags$script(jscode)),     
      checkboxInput("Redirect","Redirect",value = T)
    )
    
    server <- function(input, output, session) {
    
      observeEvent(input$Redirect,{
        if(!input$Redirect){
          session$sendCustomMessage("mymessage", "mymessage")
        }
      })
    }
    
    shinyApp(ui,server)