【问题标题】:Unable to retrieve holidays using Google API无法使用 Google API 检索假期
【发布时间】:2019-02-17 16:24:23
【问题描述】:

作为我正在开发的应用程序的一部分,我想提供一个假期列表。我正在尝试使用 Google API 来执行此操作。在写代码之前,我只是想看看返回的 JSON 是什么样子的。

我在 Google 中设置了一个帐户,获得了一个 API 密钥,并设置为使用 Google Calendar API。我对获取假期列表所需的 HTML 进行了研究,但似乎无法使其正常工作。我浏览了所有日历 API 文档,但没有找到任何有关检索假期列表的信息。以下是我尝试过的一些 URL,以及收到的回复。我在网上找到了所有这些 URL 示例(主要是在这里)。我已删除我的 API 密钥。

https://www.googleapis.com/calendar/v3/calendars/en.uk%40holiday.calendar.google.com/events?key=myKey

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

https://www.googleapis.com/calendar/v3/calendars/en.sa%40holiday@group.v.calendar.google.com/events?key=myKey

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

https://www.googleapis.com/calendar/v3/calendars/en.uk%40holiday.calendar.google.com/events?key=myKey

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

https://www.googleapis.com/calendar/v3/calendars/en.uk@holiday.calendar.google.com/events?key=myKey

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

https://www.googleapis.com/calendar/v3/calendars/en.usa#holiday@group.v.calendar.google.com/events?key=myKey

{
    "error": {
        "errors": [
        {
            "domain": "global",
            "reason": "required",
            "message": "Login Required",
            "locationType": "header",
            "location": "Authorization"
        }
        ],
        "code": 401,
        "message": "Login Required"
    }
}

Google 正在查看我的请求,但它们都是错误的。

我在网上找到的网址似乎曾经有效,但似乎不再有效。

关于如何使用它有任何更新吗?

更新:我尝试了以下答案的信息,现在我得到了:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

我在 Events:List API 参考的 Try This API 部分尝试了en.danish#holiday@group.v.calendar.google.com,我能够获取日期的 JSON。我不明白为什么它在 Try This API 中有效,但在 url 中无效。我试过的最新网址:

https://www.googleapis.com/calendar/v3/calendars/en.danish#holiday@group.v.calendar.google.com/events?key=myKey

【问题讨论】:

  • 你试过this SO post中的解决方案了吗?
  • 是的。这就是我在问题中列出的 URL 之一。

标签: google-api google-calendar-api


【解决方案1】:

当前 api 中似乎存在错误。公共 API 应该可以使用 API 密钥访问,它们不再需要您进行身份验证

?bug report here

Bug 验证信息

GET https://www.googleapis.com/calendar/v3/calendars/en.danish%23holiday%40group.v.calendar.google.com?key={YOUR_API_KEY}

回复:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

如果你使用 Oauth2 并验证你自己,你会得到

{

 "kind": "calendar#calendar",
 "etag": "\"2IG_UfzQLHbZ3_DsNnNPPvIpYxU/iF_yglNpjvUgQba3YfGrk5JFgq4\"",
 "id": "en.danish#holiday@group.v.calendar.google.com",
 "summary": "Holidays in Denmark",
 "timeZone": "Europe/Copenhagen",
 "conferenceProperties": {
  "allowedConferenceSolutionTypes": [
   "eventHangout"
  ]
 }
}

【讨论】:

  • 我尝试生成一个新密钥,但没有任何区别。我已经用尝试这个答案的结果更新了我的原始帖子。越来越近了,我想。
  • 我不明白的是,在 Try This API 页面上,当我选择“使用 api 密钥授权您的请求”时,它可以工作。
【解决方案2】:

我能够通过在公共日历 ID 中对 #@ 进行 url 编码来解决此问题。

就我而言:

en.new_zealand#holiday@group.v.calendar.google.com

变成:

en.new_zealand%23holiday%40group.v.calendar.google.com/events

在我这样做之前,我收到了 401 错误。

【讨论】:

    【解决方案3】:

    对我来说,它有效,但在国家面前没有语言。

    https://www.googleapis.com/calendar/v3/calendars/uk%40holiday.calendar.google.com/events?key=YOURKEY
    

    这对于像我这样的非英语国家来说很烦人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      相关资源
      最近更新 更多