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 获取刷新的令牌