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 文件! :)
为了能够持久存储在 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 文件! :)