我按照说明in this great post设置了我的应用服务器和Google操作之间的帐户关联。
在身份验证过程中,我请求了“https://www.googleapis.com/auth/calendar”范围权限。
我设法通过调用
在我的服务器上获取身份验证令牌app.getUser().accessToken
但是当我向googleapi日历提出请求时,使用这段代码:
const google = require('googleapis');
var calendar = google.calendar('v3');
var eventData = {
auth: myAuthToken,
calendarId: 'primary',
resource: {
'summary': 'My Event',
'description': 'Event desc',
'start': {
'dateTime': '2017-06-11',
},
'transparency': 'transparent',
'visibility': 'private',
'colorId': 'blue'
}
};
calendar.events.insert(eventData,
function(err, event) {
if (err) {
console.log(err)
}
});
我得到的是这个错误:
{ Error: Login Required
at Request._callback (\node_modules\google-auth-library\lib\transporters.js:85:15)
at Request.self.callback (\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)
code: 401,
errors:
[ { domain: 'global',
reason: 'required',
message: 'Login Required',
locationType: 'header',
location: 'Authorization' } ] }
我应该遵循其他任何身份验证步骤吗?
答案 0 :(得分:1)
我认为问题在于您使用auth
参数的结构不正确。您传递的是字符串标记,而它应该是OAuth2对象。有关详细信息,请参阅https://github.com/google/google-api-nodejs-client#making-authenticated-requests,但简而言之,您需要:
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(
YOUR_CLIENT_ID,
YOUR_CLIENT_SECRET,
YOUR_REDIRECT_URL
);
oauth2Client.setCredentials({
access_token: 'ACCESS TOKEN HERE'
});
oauth2Client
参数中使用此auth
对象。
var eventData = {
auth: oauth2Client,
...
};