GCP:403来电者没有权限

问题描述 投票:0回答:1

编辑:我最终从工作表的共享设置中授予了对服务帐户的编辑权限。那让我插入表格。我不认为这是我的情况的最佳解决方案,但是是一个解决方案。

任何帮助,我将不胜感激。我不认为这是一个复杂的问题,只是我以前从未使用过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]
]

这是我到目前为止所尝试的内容。

  1. 成功地按照Google的指南从表格中阅读。
  2. 使用日志写入权限创建服务帐户。
  3. 通过GoogleCredential下载并使用服务帐户的凭据。

我有一种感觉,我只选择了不正确的角色,虽然我不确定。我会继续研究。再次,任何帮助,我将不胜感激。

.net google-sheets google-cloud-platform google-sheets-api google-authentication
1个回答
1
投票

对于人类用户而不是服务帐户,您可以更好地使用完整的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 };

Scope

HTH

© www.soinside.com 2019 - 2024. All rights reserved.