无法使用日历 ID 通过 API 获取 Google 日历名称

Cannot fetch the Google Calendar name through API using Calendar ID

我需要从日历 ID 中获取日历名称。我已经提供了正确的 Google 日历 ID 并通过 api 发送它以获取日历详细信息并获取日历名称。

    https://www.googleapis.com/calendar/v3/calendars/en.indian#holiday@group.v.calendar.google.com

    Method type: GET
    Content-Type: application/json
    Authorization: Bearer <latest access_token>

我已经用 Google 日历 API 在线检查过,它工作正常。但是当我通过邮递员或我的 java 代码传递它时,收到以下 json。

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

此错误仅在我提供默认日历 ID 时发生,例如 en.indian#holiday@group.v.calendar.google.com(Holidays in India)

要获取有关日历的信息,您应该使用

Calendar.get Returns metadata for a calendar.

请求(注意访问令牌):

GET https://www.googleapis.com/calendar/v3/calendars/en.indian#holiday@group.v.calendar.google.com?access_token=youraccesstoken

回应

{
 "kind": "calendar#calendar",
 "etag": "\"fBXC91rAg76NkSpaCdEoUEir1ww/pR1e1Z3gR0361TBF8mRGGxGD_VM\"",
 "id": "en.indian#holiday@group.v.calendar.google.com",
 "summary": "Holidays in India",
 "timeZone": "Europe/Copenhagen"
}

即使是 public 日历,此调用也要求您通过身份验证。

只有经过身份验证的用户已将此日历添加到那里的日历列表,日历列表才会起作用。

Calendarlist.get

要求

GET https://www.googleapis.com/calendar/v3/users/me/calendarList/en.danish#holiday@group.v.calendar.google.com?access_token=youraccesstoken

回应

{
 "kind": "calendar#calendarListEntry",
 "etag": "\"1442929251602000\"",
 "id": "en.danish#holiday@group.v.calendar.google.com",
 "summary": "Holidays in Denmark",
 "timeZone": "Europe/Copenhagen",
 "colorId": "11",
 "backgroundColor": "#fbe983",
 "foregroundColor": "#000000",
 "selected": true,
 "accessRole": "reader",
 "defaultReminders": []
}

Authorization

This request requires authorization with at least one of the following scopes (read more about authentication and authorization).

Scope https://www.googleapis.com/auth/calendar.readonly https://www.googleapis.com/auth/calendar

注意:我的日历是相关用户创建的日历列表。其他日历是与用户共享的日历列表。

将 # 转换为 %23。
URL 删除# 和之后。

参考这个link