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()
で値を参照できる。