2017-11-07 5 views
3

シャイニーのアプリを別のページにリダイレクトしようとしています。私はhttrを使ってGETリクエストを送信し、ユーザーがログインしているかどうかを確認します。もしそうでなければ、彼を別のリンクにリダイレクトしたいと思います。シャイニーのアプリケーションでリダイレクト

R/Shinyのみを使用しても、追加のライブラリが必要ですか?

サンプル:

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") 
)) 
+0

は、ユーザー名とパスワードを使用してサンプルコードを提供することができない場合は、Googleに移動しますか? –

+0

これは別のやり方で動作しています。私は 'session $ request'環境で認証トークンを持っています。サーバ上で同じであれば' GET'でチェックします。だから私は応答になっている状態コードに基づいてユーザーをリダイレクトします。必要ならばいくつかのコードを提供します。 –

+0

サンプルアプリケーションをまだ用意していないので、 'false'のときにリダイレクトします –

答えて

3
ここ

これは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) 
+0

いつものように、あなたはそれを動作させる:)私が探していたこと、ありがとう!それはあなたがユーザーをリダイレクトするよう強制しているようですが。光沢はこの動作をデフォルトでサポートしていませんか? –

+0

ボタンとリンクをバインドすることができますが、サーバーからリダイレクトを送り返す必要がある 'ui'の中で簡単にできます。' shiny'チームは 'sendCustomMessage'を追加しました。これは非常に便利です。だからちょうどそれを通って、あなたはそれをかなり速く拾うでしょう –

+0

'ペースト'を見てください –

関連する問題