Google Calendar API - 请求的身份验证范围不足

Posted

技术标签:

【中文标题】Google Calendar API - 请求的身份验证范围不足【英文标题】:Google Calendar API - Request had insufficient authentication scopes 【发布时间】:2021-11-22 21:47:12 【问题描述】:

我的应用正在显示来自用户 gmail“主”日历的事件列表(并创建/删除事件)。应用在我的一个 gmail 帐户上运行良好,当我尝试使用其他 gmail 帐户登录时,我在获取事件时收到错误:

GET 403,作为响应 => 请求的身份验证范围不足。

我的日历加载代码:

window.gapi.load("client:auth2", () => 
    console.log("Client loaded!!");

    window.gapi.client.init(
      apiKey: "MY_API_KEY",
      clientId:
        "MY_CLIENT_ID",
      discoveryDocs: [
        "https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest",
      ],
      scope: "https://www.googleapis.com/auth/calendar.events",
    );

    window.gapi.client.load("calendar", "v3", () => 
      console.log("Calendar loaded!!");
      //   List events after calendar is loaded
      listUpcomingEvents("week");
    );
  );

在我的 listUpcomingEvents() 函数中,我使用纯 js(无后端)获取事件:

window.gapi.client.calendar.events
  .list(
    calendarId: "primary",
    timeMin: start.toISOString(),
    timeMax: end,
    showDeleted: false,
    singleEvents: true,
    maxResults: 100,
    orderBy: "startTime",
  )
  .then(function (response) 
    var events = response.result.items;
    console.log("Events:", events);
    // Set events
    setEvents([...events]);
    setEventsFilter(events_filter);
  );

我尝试在我的 Google Cloud Platform 中设置范围(oauth 同意屏幕),切换到其他范围或添加更多范围,但没有任何效果。我什至尝试公开日历以及我在 *** 上找到的其他一些东西。

【问题讨论】:

我在一个项目中使用了 gcalendar,我记得您必须先征得用户的许可才能访问日历。 【参考方案1】:

请求的身份验证范围不足。

表示用户已使用一个范围进行身份验证,但您使用的方法需要另一个范围。

方法Events.list 需要以下范围之一

现在您发布的代码显示了scope: "https://www.googleapis.com/auth/calendar.events",,这是可以让您访问列表事件的范围之一。

问题在于,当您运行该代码时,同意屏幕会弹出并且用户授权您的应用程序。然后您将范围更改为https://www.googleapis.com/auth/calendar.events 并再次运行您的代码。但是没有弹出新的同意屏幕,因为用户当前已经过身份验证。

您需要让您的应用再次请求用户授权,届时新的范围将显示,如果用户同意,您将能够使用该方法。

执行此操作的最简单方法是转到用户的 google 帐户并撤消授予您的应用程序的访问权限。 Google account

或者由于您的应用程序是 javascript,您应该可以等待一个小时,您的访问权限应该会过期,并且会再次要求用户同意。

【讨论】:

哦,感谢您指出这对我帮助很大。我最近导入了 react-google-login,并且我没有将那个范围放在让我登录并提示“同意屏幕”的按钮上(......我用那个“一个”gmail帐户做了那个我正在测试 API)。再次感谢。 如果对您有帮助,请记得采纳答案。

以上是关于Google Calendar API - 请求的身份验证范围不足的主要内容,如果未能解决你的问题,请参考以下文章

Google Calendar API - 请求的身份验证范围不足

通过多封电子邮件从 google calendar api 查询事件

如何从 Google Calendar API 获取刷新的令牌

Google Calendar API停止了返回活动

Google Calendar API。为事件修补sharedExtendedProperty

为啥 Google Calendar API (oauth2) 以“权限不足”响应?