【问题标题】:Google People API unauthorized未经授权的 Google People API
【发布时间】:2020-12-03 16:54:10
【问题描述】:

我想获得自己的 Google 通讯录,因此我阅读了 People API documentation,在“获取和使用 API 密钥下的“授权请求”部分>”它说:

API 密钥:不提供 OAuth 2.0 令牌的请求必须发送 API 密钥。密钥标识您的项目并提供 API 访问权限, 配额和报告。

API 支持对 API 密钥的多种类型的限制。如果 API 您需要的密钥不存在,然后在 通过单击创建凭据 > API 密钥 进行控制台。你可以限制 在生产环境中使用之前,请点击 Restrict key 和 选择限制之一。

看起来很简单,我进入项目页面并创建了一个不受限制的 API 密钥,然后我可以创建这个请求 URL:https://people.googleapis.com/v1/people/me?key=API_KEY&personFields=names,API 密钥就在 URL 中,正如该声明所建议的那样。

获得 API 密钥后,您的应用程序可以将查询参数 key=yourAPIKey 附加到所有请求 URL。

但是当我运行之前发布的 URL 时,它会返回:

{
    "error": {
        "code": 401,
        "message": "The request does not have valid authentication credentials.",
        "status": "UNAUTHENTICATED"
    }
}

我做错了什么? :(

【问题讨论】:

  • 您的 Google Workspace 项目中有 enabled People API 吗?您能否在不提供任何敏感数据的情况下向我们展示您提出的请求?您使用的是哪种人员 API 方法?你用的是什么范围?谢谢 ! :D
  • @MateoRandwolf 我已启用人员 API,在问题中我尝试使用“读取配置文件”请求,如您在示例 URL 中看到的那样,我没有设置任何范围,因为我没有请参阅“授权”部分。 “列出用户的联系人”请求似乎也不适用于 API 密钥,因为我得到了这个作为回报 "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project."
  • 那么您是在 Javascript 应用程序中运行它,还是打算使用哪种语言进行这些 API 调用?你刚刚运行了那个 URL 吗? 您尝​​试访问的数据是公开的还是私有的? 如果数据是私有的,您需要使用OAuth 2.0 进行授权。
  • 啊,我现在感觉很傻。我曾假设,由于我拥有使用 API 密钥的项目,它可以查看我的联系人,但我想它不能那样工作,我想避免使用 OAuth,因为 API 密钥实现起来更简单,但我想我将必须。不过感谢您的帮助!

标签: google-people-api


【解决方案1】:

事实证明解决方案非常简单,我觉得很愚蠢,如果您尝试访问您应该使用的任何私人数据,则无法使用 API 密钥访问您自己的 Google 联系人或任何其他私人数据OAuth 2.0 而不是 API 密钥(例如,与您可以使用 API 密钥的公共 YouTube 播放列表不同)。感谢@Mateo Randwolf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2011-08-02
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多