我已采取的步骤
使用Google开发人员控制台:
我已经创建了一个项目,并为该项目创建了一个客户端。
我已经激活了Youtube API数据
我将回调设置为http://localhost:3000/callback
我已经下载了“ client_secrets”。
节点服务器的初始步骤:
使用“ client_secrets”,我创建了一个新的OAuth2Client实例,并将其命名为oauth2Client
我使用oauth2Client变量生成了URL,并指定了以下内容:
var url = oauth2Client.generateAuthUrl({
access_type: 'offline', //returns fresh token,
scope: 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/youtubepartner'
});
Google授权页面:
我转到生成的URL并单击授权,然后重定向到http://localhost:3000/callback上的回调
节点服务器的最后步骤:
我在网址中得到了“代码”(看起来像这样:4 / gZpLEwZWD6OVEE7F5uXXXXXXXXXXXXXXXXXXXX)
使用相同的oauth2Client变量,我尝试像这样获取令牌:
oauth2Client.getToken(code, function (err, tokens) {
// set tokens to the client
console.log('errors ' + err);
console.log('tokens ' + tokens);
oauth2Client.setCredentials(tokens);
})
console.log的结果是:
errors Error: invalid_request
tokens null
题
是什么导致
invalid_request
?我错过了哪一部分?其他一些类似的问题提出了不同的解决方案
在这个问题上似乎有很多问题,但是大多数都是具体问题,答案往往含糊不清。
我在问一个通用的问题,并寻找一个具体的答案。
最佳答案
您没有提到oauth2Client实例的构造,因此这可能是GutHub google-api-nodejs-client/issues/231上的lib问题引起的
即,构造函数OAuth2中的第三个参数将是一个字符串
client_secrets.web.redirect_uris[0]
var oauth2Client = new OAuth2Client(
client_secrets.web.client_id,
client_secrets.web.client_secret,
client_secrets.web.redirect_uris[0] //<-- take first uri
);