目前,我正在使用Java客户端通过Drive API生成Google文档文件。这工作正常,作为凭证,我们使用的是服务帐户。创建文档后,该帐户将与登录用户的电子邮件共享该文档。到目前为止,非常好。
第二部分是为这个新的空文档生成标题和其他内容。我们发现脚本可以部署为API可执行文件+通过“脚本执行API”触发,但是碰到了:
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
"The caller does not have permission"
来自其他线程&我找到的主题,范围从“它不适用于服务帐户到正确关联项目”,我尝试过的内容:
- >创建了一个文档的绑定脚本,部署为API,将项目编号更改为服务帐户也是其所有者的项目编号
- >启用了Drive API的+脚本API
- >提供以下范围:
DriveScopes.DRIVE_FILE, ScriptScopes.DRIVE, "https://www.googleapis.com/auth/documents"
(最后一个范围是脚本的Project属性中可见的范围。
我已经尝试过这个过程来绑定脚本&每次我得到相同的错误时,每次都将它们与项目相关联。
这对服务器到服务器非常重要,因此我无法进行任何用户交互,因为它必须生成报告和用一些标准结构填充它们+之后用“简单....”方式验证结构。
答案 0 :(得分:0)
您遇到此禁止错误的一个原因是您使用的范围错误/不完整。因此,请确保在应用程序中使用适当的范围。您可以通过查看此SO question中的答案进行验证。
我还发现有一个已知的错误Execution API - can't be use a service account。因此,请检查此问题的替代解决方案。
有关详细信息,请查看这些线程是否可以为您提供帮助。