【问题标题】:Try this API for Logging API returns "PERMISSION_DENIED"试试这个 API for Logging API 返回“PERMISSION_DENIED”
【发布时间】:2019-07-14 18:29:00
【问题描述】:

我正在尝试在 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 密钥时会失败。

身份验证 2.0: Working request using OAuth 2.0

API 密钥: Non-Working request using API Key

Google 文档说他们为这个“试用这个 API”功能生成了自己的 API 密钥。 https://developers.google.com/explorer-help/

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

编辑: 如果您想尝试一下,这里有一个指向 Google Cloud Platform 中的 Try this API 功能的链接。 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

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

import requests

entry = {
        "entries": [
            {
                "logName": "projects/[PROJECT_ID]/logs/requests",
                "resource": {
                    "type": "http_load_balancer",
                    "labels": {}
                }
            }
        ]
    }

requests.post('https://logging.googleapis.com/v2/entries:write?key=[YOUR_API_KEY]', data=json.dumps(entry))

API 密钥是由我的具有“日志编写器”、“日志查看器”和“日志记录管理员”权限的用户创建的。从理论上讲,这应该是我发出发布请求所需的所有权限。但是,它仍然返回“PERMISSION_DENIED”状态。

任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

  • 嗨 Jonathan Sou - 欢迎来到 Stack Overflow!这个问题是否涉及代码,如果有,请编辑?
  • @jonathan-sou 我在下面提供了答案,但我很好奇:您是否尝试单击“凭据”旁边的“(?)”按钮?它有助于提供一些类似的上下文。
  • 我添加了我尝试在我的代码中使用的请求的代码 sn-p。 @John - “(?)”按钮导致凭据常见问题解答,解释了使用 API 密钥和 OAuth 2.0 之间的区别,但并不能真正帮助我解决问题。

标签: google-api http-status-code-403 google-apis-explorer google-cloud-logging


【解决方案1】:

您似乎正在请求写入不可公开写入的数据。 API Keys 没有用户的概念,它们只是标识您可以调用 API。因此,看起来您的 API 密钥请求正在发挥作用,但响应告诉您:我不知道您是谁,所以我不能让您这样做。

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

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

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2019-11-29
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多