【问题标题】:What does a 404 mean in the context of a Google Calendar API?在 Google Calendar API 的上下文中,404 是什么意思?
【发布时间】:2019-09-18 17:17:23
【问题描述】:

我正在尝试使用 Google Calendar API list 以编程方式访问我拥有的日历:

r = requests.get(
        url="https://www.googleapis.com/calendar/v3/calendars/<the ID of my calendar which looks like mydomain_randomstuff@group.calendar.google.com>/events",
        params={
            'key': <the key from the API console>,
            'singleEvents': True,
            'orderBy': 'startTime'
        }

此调用失败并返回 404:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "Not Found"
   }
  ],
  "code": 404,
  "message": "Not Found"
 }
}

在此 API 的上下文中,该错误实际上意味着什么?

注意:

  • 日历确实存在,并且有事件
  • 甚至还没有达到 API 限制

【问题讨论】:

  • ????我猜这段代码是 JavaScript,如果不是,请使用您使用的正确编程语言修复标签。
  • @DaImTo:我删除了 JS 标签,因为问题与任何特定语言无关,而是与 API 相关。我在示例中使用了 Python,但没关系
  • 这看起来不像 google api python 客户端库中的代码,但我的 python 知识有限。
  • @DaImTo: 不,这是一个requests调用,它是Python中HTTP调用的实现(类似于JS中的fetch,因为你提到了它——只是同步的)

标签: google-api google-calendar-api


【解决方案1】:
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "Not Found"
   }
  ],
  "code": 404,
  "message": "Not Found"
 }
}

可以表示两件事之一。您输入的日历 ID 正确,或者您通过身份验证的用户无权访问该日历。确保您使用有权访问该日历的正确用户登录。或者,您可以执行calendar.list,它将返回用户当前有权访问的日历列表。这样您就不必担心可能会错过输入日历 ID。

授权

您使用的方法events.list 需要授权(用户许可)才能访问他们的日历。可以在文档页面中看到

您需要使用 Oauth2 和上述范围之一对您的用户进行身份验证。然后,您将拥有一个访问令牌,可用于访问此日历。

apikey

API 密钥用于访问公共数据。除非您的日历设置为公开,否则您将无法使用它来查看活动。另请记住,api 密钥无权更新公共日历,您仍需要通过身份验证才能对其进行更改。

服务帐号

如果这是一个服务器到服务器的应用程序,您应该使用服务帐户而不是 API 密钥。您需要做的就是将服务帐户添加为谷歌日历上的用户,就像您添加任何其他用户一样。然后它将可以访问您的日历。

【讨论】:

  • 这是服务器到服务器的调用,所以我使用 API 密钥。 404 是“未找到”(无论这实际上意味着什么),缺乏授权将是 401 或 403,对吗?我的核心问题是 404 没有在任何地方记录(或者至少我没有找到它)。此外,日历 ID 是正确的。
  • 是的,如果您想使用 api 密钥选择数据,它可能缺乏授权确保日历设置为公共。我已经更新了我的答案。
  • 你是对的,感谢您的更新。我没有意识到关键是用于配额管理,而不是用于任何类型的身份验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多