shinyapps.io 上的 rdrop2 - 身份验证不起作用

rdrop2 on shinyapps.io - authentication does not work

为了能够持久存储在 Shinyapps.io 上创建的数据,我决定通过 rdrop2 使用 Dropbox。但是,我有一个问题:rdrop2 每次都需要通过浏览器从 Dropbox 进行手动身份验证。

我的计划是通过dropkey.rds拦截这个。

所以我在PC本地通过浏览器完成了认证,保存了dropkey.rds,为了保险起见,放在我的www文件夹和对应脚本所在的目录下并且在“项目顶级文件夹”中。只是为了让函数可以肯定地找到 dropkey.rds。

不幸的是,它不起作用。即使在本地,脚本也会要求我进行身份验证(至少我第一次 运行 它)。在 Shinyapps 中,程序只是崩溃,因为这里没有浏览器可以打开。

如何绕过 Shinyapps.io 中的身份验证?

您可以在 post 的末尾找到一些代码摘录。谢谢!!!

此致


代码摘录:

  token <- readRDS("droptoken.rds")
  drop_acc(dtoken = token)
  
  drop_upload(Pn, path = "test")

(Pn 只是应该上传的 png 的路径)

日志Shinyapps.io

Waiting for authentication in browser... 2021-10-15T10:21:44.490437+00:00 shinyapps[48xxxxx]: Press Esc/Ctrl + C to abort 2021-10-15T10:21:44.491678+00:00 shinyapps[48xxxxx]: https://www.dropbox.com/oauth2/authorize?client_id=mxxxxxx2w&redirect_uri=xxxx 2021-10-15T10:21:44.491610+00:00 shinyapps[48xxxxxx]: Please point your browser to the following url:

小更新:

我能够解决问题。解决方案是 as described here:

To be extra clear for future readers, for a shiny app you should include your token as an RDS, and then either

authenticate with that token like drop_auth(rdstoken = "tokenfile.rds") in global.R or at the top of server.R, then call other drop_() functions normally (without using the dtoken arg) do not call drop_auth(), read the token into R from the RDS file, then pass that token object into every drop_() function through the dtoken arg I think the first option is much, much better (and is what I do), but the second should still be viable.

将身份验证放在 server.R 的顶部(对于工作人员 ui.R :D)解决了我的问题。请注意,您希望在脚本中使用以下 rdrop2 命令而无需再次调用 auth 或 rds 文件! :)