编辑:我最终从工作表的共享设置中授予了对服务帐户的编辑权限。那让我插入表格。我不认为这是我的情况的最佳解决方案,但是是一个解决方案。
任何帮助,我将不胜感激。我不认为这是一个复杂的问题,只是我以前从未使用过GCP而且还在学习。
我正在尝试使用他们的.NET apis写入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
下载并使用服务帐户的凭据。我有一种感觉,我只选择了不正确的角色,虽然我不确定。我会继续研究。再次,任何帮助,我将不胜感激。
对于人类用户而不是服务帐户,您可以更好地使用完整的OAuth(3-legged-auth)流程。
请参阅此处的示例。这使用人工用户帐户,并要求用户批准代码访问其Google表格数据的权限:https://developers.google.com/sheets/api/quickstart/dotnet
令人困惑的是,虽然IAM是用于例如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 };
HTH