我知道还有几个类似的问题也是如此(比如这里和这里),但我想我应该再试一次,因为其他问题没有得到多少答案。
我有一个闪亮的应用程序,它允许用户通过应用程序提供输入,但是这些用户需要跳过认证步骤。在上一个版本的googlesheets中,我公开了表单(对任何有链接的人),并避免了一些身份验证过程。在更新到googlesheets4时,我遇到了将更新的应用程序部署到shinyapps.io时遇到的权限问题。这是我尝试过的,以及我得到的结果的总结。任何指示都将不胜感激。
首先,基于文章中的建议,我创建了一个服务帐户,下载了一个JSON服务帐户令牌(格式为“project-name-12345678abc 1.json”),并将其保存在父应用程序文件夹中,假设它需要与应用程序包一起上传。然后我启用了。
我在应用程序的前面放置了以下命令,先于任何重要的命令:
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")结果
大多数组合都会给我带来错误,说“不能获得谷歌凭证”,然后建议我看一下漱口网站上的非交互式文章。一个例外是尝试3,它提供了以下错误消息--奇怪的是,它提供了以下错误消息:
警告:错误:客户端错误:(403) PERMISSION_DENIED
对我可能错过了什么有什么想法吗?该应用程序在本地运行良好。
任何帮助都是非常感谢的。谢谢!
发布于 2020-09-07 21:29:59
使用这个(已结束的) Github问题中确定的方法解决了这个问题。
关键是准确地遵循以下步骤:
gs4_auth(cache = ".secrets") once,在浏览器中本地运行该应用程序。gs4_auth(cache = ".secrets", email = TRUE, use_oob = TRUE)代替上面的线。我还清除了先前保存的令牌,这可能是很重要的,但很难知道。
正如在Github讨论中所指出的,可能没有必要包括use_oob = TRUE。此外,这种方法在漱口站点上的非交互方式文章中有详细介绍。
https://stackoverflow.com/questions/63699558
复制相似问题