该用户已经通过使用Google从Google Actions登录的方式获得了自己的gmail帐户的授权。现在,我需要向用户Google日历插入事件列表,但是我遇到了一些问题或不知道如何构建它。日历api非常新,因此请任何人指导我如何解决它。
const {google} = require('googleapis');
var calendar = google.calendar('v3');
const SCOPES = ['https://www.googleapis.com/auth/calendar'];
const client_secret = "xyz";
const client_id = "xyz";
const redirect_uris ="xyz";
const oAuth2Client = new google.auth.OAuth2(
client_id, client_secret, redirect_uris);
oAuth2Client.setCredentials({
access_token: 'ACCESS TOKEN HERE'
});
var event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
};
calendar.events.insert({
auth: oAuth2Client,
calendarId: 'primary',
resource: event,
}, function(err, event) {
if (err) {
console.log('There was an error contacting the Calendar service: ' + err);
return;
}
});
答案 0 :(得分:2)
使用“ Google登录助手”获取的ID令牌不足以使您能够访问其日历。您将需要一个访问令牌或auth令牌。尽管Google登录可以帮助您解决问题-但这还不是全部,解决方案可能会有些复杂。
通常,您需要执行以下操作:
您需要确保用于助手的Google Cloud项目已打开Calendar API。您将通过Cloud Dashboard的API Library完成此操作。
您还需要为通过Cloud Dashboard的Credentials页执行的Web应用程序(诚实)创建OAuth 2.0客户端ID密钥
借助这些以及Google登录,您可以创建一个hybrid sign-in strategy,让用户登录并授权您的操作使用正确的范围访问其日历。
在登录过程结束时,您将(最终)获得访问令牌和刷新令牌。您会将其存储在某种形式的数据存储区或数据库(例如Firebase Firestore)中,并以用户的Google ID为键。
然后,当他们访问您的操作时,您可以从ID令牌中获取他们的Google ID,在数据库中查找他们的访问令牌,然后执行calendar命令。
有关该过程的更完整讨论,请参见this StackOverflow post。