我正在一个函数中创建一个oauth2client并返回它。我实际上传递了clien id,secret,redirect url和凭据。根据我的检查,这些都是正确的。
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
...
credentials = {
access_token: accessToken,
refresh_token: refreshToken
};
oauth2Client.setCredentials(credentials);
然后我在返回oauth2client对象的函数中执行此操作:
var plus = google.plus('v1');
console.log(JSON.stringify(oauth_client));
plus.people.get({ userId: 'me' , auth: oauth_client}, function(err, response) {
if(err) {
console.log(err);
} else {
console.log(JSON.stringify(response));
return response;
}
});
然而,我收到一条错误消息,指出authClient.request不是函数。
TypeError:authClient.request不是函数 at createAPIRequest(/node_modules/googleapis/lib/apirequest.js:180:22)
我不确定为什么会收到此错误。我也做了console.log(JSON.stringify(oauth_client))来检查请求函数,我没有看到任何。有人提到这不能显示完整的原型链,而且请求函数可能实际存在。
答案 0 :(得分:3)
问题出在" oauth_client"。我用过" google-auth-library"进行身份验证。
var googleAuth = require('google-auth-library');
var auth = new googleAuth();
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
oauth2Client.credentials = credentials;
然后使用此oauth2Client作为oauth_client。
答案 1 :(得分:0)
不确定您是否曾解决此问题,但请尝试检查您有权限的范围。
我收到了这个错误,结果我将我的范围设置为' https://www.googleapis.com/auth/youtube.readonly'然后当我将我的范围改为' https://www.googleapis.com/auth/youtube.upload' &安培; ' https://www.googleapis.com/auth/youtube'我能够上传视频而不是收到错误authClient.request is not a function
答案 2 :(得分:0)
我遇到了同样的问题,但是对OAuth2框架没有足够的经验。
我设法通过删除当前目录中已安装并运行的节点模块来解决id问题:
npm安装googleapis @ 27-保存
在尝试按照https://developers.google.com/drive/api/v3/quickstart/nodejs
的Google Drive API教程进行操作时遇到了麻烦