我在一个函数中创建oauth2client并返回它。我确实传入了客户端id、secret、重定向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。请求不是函数
TypeError: authClient。请求不是一个函数/node_modules/googleapis/lib/apirequest.js:180:22)
我不知道为什么我得到这个错误。我还做了console.log(JSON.stringify(oauth_client))来检查请求函数,但我没有看到任何。有人提到,这不能显示完整的原型链,请求函数可能实际上在那里。
问题在于"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;
不确定您是否已经解决了这个问题,但请尝试检查您拥有权限的范围。
我得到这个错误,原来我有我的范围设置为'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
不使用OAuth,您必须使用GoogleAuth与服务帐户:
import { google } from 'googleapis'
const client = new google.auth.GoogleAuth({
keyFile: 'credentials.json',
})