Javascript 如何将Google JWT转换为各种API的Oauth2令牌?
我有一个运行在Node.JS中的服务器到服务器风格的应用程序,需要访问Google文档。我能够从Google获得JWT令牌,但不知道如何将其交换为OAUTH2令牌,以便与各种Google API一起使用。OAuth 2.0游乐场也没有任何帮助,它也无法识别字符串JWT令牌 收到的代币样本:ya29.NgECxOUI6NICe_ow3C3iLyFviklSB5mW_UGMH0LADLJUPR4FUGUIH9UZHCPHOADHP7-JeBWZH-PCg 当我运行此程序并获取上述令牌时,我从Google收到的错误是: {[错误:不正确的令牌类型。]代码:400,类型:“无效的\u授权”} 这是我的密码:Javascript 如何将Google JWT转换为各种API的Oauth2令牌?,javascript,node.js,oauth,oauth-2.0,Javascript,Node.js,Oauth,Oauth 2.0,我有一个运行在Node.JS中的服务器到服务器风格的应用程序,需要访问Google文档。我能够从Google获得JWT令牌,但不知道如何将其交换为OAUTH2令牌,以便与各种Google API一起使用。OAuth 2.0游乐场也没有任何帮助,它也无法识别字符串JWT令牌 收到的代币样本:ya29.NgECxOUI6NICe_ow3C3iLyFviklSB5mW_UGMH0LADLJUPR4FUGUIH9UZHCPHOADHP7-JeBWZH-PCg 当我运行此程序并获取上述令牌时,我从Goog
/ Code to Obtain OAUTH2 credentials to access google drive in Node.JS
//
// To install googleapis --> npm install googleapis --save
var googleapis = require('googleapis');
// To install JWT Support --> npm install google-oauth-jwt
var googleAuth = require('google-oauth-jwt');
// To install Google Drive, npm install google-drive
var drive = googleapis.drive('v2');
var OAuth2 = googleapis.auth.OAuth2;
// variables to use to use to get initial identification token
var EMAIL = 'MyEmailAddressForServices@developer.gserviceaccount.com',
KEYFILE = 'C:/GoogleWork/key.pem',
SCOPE = 'https://www.googleapis.com/auth/drive.file';
// Variables to use to obtain Oauth2 authorization
var CLIENT_ID = 'XXXXXXXXXXX-XXXXXXXXXXXXXXXX.apps.googleusercontent.com',
CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXX',
REDIRECT_URL = 'http://localhost';
googleAuth.authenticate({email: EMAIL, keyFile: KEYFILE, scopes: [SCOPE]},
function(err, token) {
if (err) {
console.log('ERROR: ' + err);
return;
}
else {
console.log('Token Received: ' + token);
GetToken(token);
}
});
var GetToken = function(token) {
var auth = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
auth.getToken(token, function(err, Oauth_Tokens) {
if (err) {
console.log('Error while trying to retrieve token: ', err);
return;
}
auth.credentials = Oauth_Tokens;
console.log("Tokens: " + auth.credentials)
//upload();
});
}
任何帮助都将不胜感激!
谢谢,杰夫,我只是想澄清一下。。出于明显的隐私原因,上述实际凭证已被删除。要运行此代码片段,需要替换自己的值…“ya29.NgECxOUI6…”是一个访问令牌,谢谢!使用googleAuthenticate的令牌工作正常。。。googleDrive(token).files().get(ListFiles)实际上会列出一个文件列表。。。所以一切都好!谢谢你的帮助。。。顺便说一句:我明白你们为什么这么喜欢这些库了,看起来几乎每个与节点相关的例子相对于它的库来说都过时了。。。看起来事情还在发展。。。