Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将Google JWT转换为各种API的Oauth2令牌?_Javascript_Node.js_Oauth_Oauth 2.0 - Fatal编程技术网

Javascript 如何将Google JWT转换为各种API的Oauth2令牌?

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

我有一个运行在Node.JS中的服务器到服务器风格的应用程序,需要访问Google文档。我能够从Google获得JWT令牌,但不知道如何将其交换为OAUTH2令牌,以便与各种Google API一起使用。OAuth 2.0游乐场也没有任何帮助,它也无法识别字符串JWT令牌

收到的代币样本:ya29.NgECxOUI6NICe_ow3C3iLyFviklSB5mW_UGMH0LADLJUPR4FUGUIH9UZHCPHOADHP7-JeBWZH-PCg

当我运行此程序并获取上述令牌时,我从Google收到的错误是: {[错误:不正确的令牌类型。]代码:400,类型:“无效的\u授权”}

这是我的密码:

/ 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)实际上会列出一个文件列表。。。所以一切都好!谢谢你的帮助。。。顺便说一句:我明白你们为什么这么喜欢这些库了,看起来几乎每个与节点相关的例子相对于它的库来说都过时了。。。看起来事情还在发展。。。