问候我的同伴开发人员 我正在一个项目中,客户需要将Google日历与该项目联系起来。 我正在使用GAPI将Google日历与我的应用程序连接。 这是我在做什么:
步骤1:
let config = {
apiKey: [API_KEY],
clientId: [CLIENT_ID],
access_type: 'offline',
discoveryDocs: ['https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest'],
scope: 'https://www.googleapis.com/auth/calendar.events'
}
gapi.load('client:auth2', () => {
gapi.client.init(config).then(() => {
gapi.auth2.getAuthInstance().isSignedIn.listen(true);
});
});
步骤2:
Promise.resolve(gapi.auth2.getAuthInstance().signIn()).then(response => {
store access_token, id_token, login_hint
}).then(() => {
run_different_axios_requests_to_google_calendar();
});
或者如果我已经有访问令牌:
run_different_axios_requests_to_google_calendar();
到此为止,它可以完美运行!
问题出现在访问令牌过期时,请阅读文档,我发现,如果您运行gapi.auth2.getAuthInstance(). grantOfflineAccess()
而不是gapi.auth2.getAuthInstance().signIn()
,则会得到refresh_token
和access_token
,{ {1}},id_token
,但我没有得到回应,实际上我的承诺表明login_hint
,并且我需要在access_token到期时使用刷新令牌,以便我可以获取新令牌,而无需不得不要求用户再次登录(通过Promise)。我不确定我在做什么错!任何帮助表示赞赏!
答案 0 :(得分:1)
这是Google的complete documentation,可让您使用新的JS库来释放Google Apps的功能。它详细说明了从身份验证到使用GAPI库(如Calendar API)的逐步过程。