我正在尝试使用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”状态。
任何帮助将非常感激。先感谢您。
看起来您正在请求写入不可公开写入的数据。 API密钥没有用户概念,它们仅标识您可以调用API。所以看起来你的API密钥请求在它可以的范围内工作,但响应告诉你:我不知道你是谁,所以我不能让你这样做。
OAuth 2.0是此处的解决方案,因为它代表您的帐户行事(您必须同意),允许API验证您是否有权采取此操作。
服务帐户是代表您的项目而不是您的用户行事的另一种选择,但它们在Web UI中不实用。