【发布时间】: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 同意屏幕),切换到其他范围或添加更多范围,但没有任何效果。我什至尝试公开日历以及我在 stackoverflow 上找到的其他一些东西。
【问题讨论】:
-
我在一个项目中使用了 gcalendar,我记得您必须先征得用户的许可才能访问日历。
标签: javascript reactjs google-oauth google-calendar-api google-api-js-client