Posted at

ShinyアプリでURLのsearch文字列を変数入力として扱う

More than 1 year has passed since last update.

Shinyアプリの動作を指定する変数をURLのsearch文字列を使って引き渡す方法について解説する。


ユースケース

認証機能の無い Shiny Server Open Source でアプリを公開するときに、ユーザ毎にトークンを入力して、ユーザ毎の動作をするようにアプリを作ったが、ユーザから毎回トークンを入力するのが面倒と言われた。その解決方法として、トークン込みのアプリURLをブックマークすればいいのではと思いついた。


URLに値を埋め込む

ここで、ShinyアプリのURLがhttp://localhost:3774/myapp とすると、トークンXXXXXを次のように仕込むことができる。

http://localhost:3774/myapp?token=XXXXX


URLの?token=XXXXXの部分は session$clientData$url_search で参照

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

token <- reactive({
url_search = session$clientData$url_search
if (url_search != "") {
sub("\\?token=", "", url_search)
}
})
}

これで、token()で値を参照できる。


参考サイト