我知道 SO 周围还有其他一些类似的问题(例如,这里和这里),但我想我会再试一次,因为其他人没有得到很多答案。
我有一个 Shiny 应用程序,它允许其用户通过应用程序提供输入,但这些用户需要跳过身份验证步骤。在以前的版本中,googlesheets
我将表格公开(对任何知道链接的人)并避免了一些身份验证过程。在更新到googlesheets4
将更新的应用程序部署到 shinyapps.io 时,我遇到了权限问题。这是我尝试过的内容的摘要,以及我得到的结果。任何指针将不胜感激。
首先,根据本文中的建议,我gargle
创建了一个服务帐户,下载了一个 JSON 服务帐户令牌(格式为“project-name-12345678abc1.json”),并将其(暂时)保存在父应用文件夹下假设它需要与应用程序包一起上传。然后我启用了 Google Sheets API。
我将以下命令放在应用程序的前面,在任何实质性内容之前:
gs4_deauth()
,因为 google 表格对知道链接的任何人都是公开的,因此可能不需要令牌。在这篇文章之后,
gs4_auth(path = "project-name-12345678abc1.json")
. 我还添加了scopes
参数(如下所示)和use_oob=TRUE
.credentials_service_account(scopes = "https://www.googleapis.com/auth/spreadsheets", path = "project-name-12345678abc1.json")
.credentials_app_default(path = "project-name-12345678abc1.json")
结果
大多数组合都会给我错误提示“无法获取 Google 凭据”,然后建议我查看漱口网站上的非交互式文章。一个例外是尝试 3,它提供了以下错误消息 - 奇怪的是:
警告:错误:客户端错误:(403)PERMISSION_DENIED
- 客户没有足够的权限。发生这种情况的原因可能是 OAuth 令牌没有正确的范围、客户端没有权限或尚未为客户端项目启用 API。
关于我可能遗漏的任何想法?该应用程序在本地运行良好。
任何帮助表示赞赏。谢谢!