尝试此API用于Logging API返回“PERMISSION_DENIED”

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

我正在尝试使用Google Cloud Platform在其文档中提供的“试用此API”功能测试Google Cloud Logging API,但我收到了此回复:

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}

我知道我的回复正文是正确的,因为它适用于OAuth 2.0,但在使用API​​密钥时失败了。

Oauth 2.0:qazxsw poi

API密钥:Working request using OAuth 2.0

Google文档称他们为此“试用此API”功能生成了自己的API密钥。 Non-Working request using API Key

由于Google使用自己的API密钥,因此我不明白为什么我会收到PERMISSION_DENIED的响应状态。

修改:如果您想尝试一下,可以在此处找到Google云端平台中试用此API功能的链接。 https://developers.google.com/explorer-help/

这是我在代码中用来创建条目的python请求:

https://cloud.google.com/logging/docs/reference/v2/rest/v2/entries/write?apix_params=%7B%22resource%22%3A%7B%22entries%22%3A%5B%7B%22logName%22%3A%22projects%2F%5BPROJECT_ID%5D%2Flogs%2Frequests%22%2C%22resource%22%3A%7B%22type%22%3A%22http_load_balancer%22%2C%22labels%22%3A%7B%7D%7D%7D%5D%7D%7D

API密钥是从我的用户创建的,该用户具有“logs writer”,“logs viewer”和“logging admin”权限。从理论上讲,这应该是我发布帖子请求所需的所有权限。但是,它仍然返回“PERMISSION_DENIED”状态。

任何帮助将非常感激。先感谢您。

google-api http-status-code-403 google-apis-explorer google-cloud-logging
1个回答
2
投票

看起来您正在请求写入不可公开写入的数据。 API密钥没有用户概念,它们仅标识您可以调用API。所以看起来你的API密钥请求在它可以的范围内工作,但响应告诉你:我不知道你是谁,所以我不能让你这样做。

OAuth 2.0是此处的解决方案,因为它代表您的帐户行事(您必须同意),允许API验证您是否有权采取此操作。

服务帐户是代表您的项目而不是您的用户行事的另一种选择,但它们在Web UI中不实用。

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