nodejs googleapis,authClient.request不是一个函数

时间:2016-09-21 16:02:19

标签: node.js meteor google-api google-api-client google-api-nodejs-client

我正在一个函数中创建一个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))来检查请求函数,我没有看到任何。有人提到这不能显示完整的原型链,而且请求函数可能实际存在。

3 个答案:

答案 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教程进行操作时遇到了麻烦