编辑:我最终授予了工作表的共享设置对服务帐户的编辑权限。那让我插入工作表。我认为这不是针对我的情况的最佳解决方案,而是 a 解决方案。
我将不胜感激。我认为这不是一个复杂的问题,只是我以前从未使用过GCP并仍在学习中。
我正在尝试使用他们的.NET API写入Google表格。我想从我正在开发的游戏中向此表提交用户反馈。我希望该过程不让用户经历自己的任何Google授权过程。
我遇到了这个错误:
GoogleApiException: Google.Apis.Requests.RequestError
The caller does not have permission [403]
Errors [
Message[The caller does not have permission] Location[ - ] Reason[forbidden] Domain[global]
]
这是我到目前为止尝试过的。
GoogleCredential
下载并使用服务帐户的凭据。我不确定我只是选择了错误的角色,尽管我不确定。我会继续研究。再一次,我将不胜感激。
答案 0 :(得分:1)
使用完整的OAuth(三足身份验证)流程供人类用户而非服务帐户使用,可能会更好。
请参见此处的示例。这使用人工用户帐户,并且需要用户批准代码的权限才能访问其Google表格数据: https://developers.google.com/sheets/api/quickstart/dotnet
这令人困惑,但是,尽管IAM是用于例如Google Cloud Platform服务,其他Google服务不使用IAM,而是使用OAuth范围来定义客户端对API方法的访问。
因此,是的,IAM日志写入是错误的,因为您可能指的是客户端写入Stackdriver Logging所需的角色。
在此处查看Google表格的(OAuth)范围: https://developers.google.com/sheets/api/guides/authorizing
请注意,示例代码为:
static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
对应于https://www.googleapis.com/auth/spreadsheets.readonly
因此,您需要使用:https://www.googleapis.com/auth/spreadsheets
,它对应于:
static string[] Scopes = { SheetsService.Scope.Spreadsheets };
请参见Scope
HTH