首页 文章

谷歌 Map 跟踪api - 使用节点js发送请求

提问于
浏览
0

为了访问Google Map 跟踪API,我有来自Google的OAuth 2.0授权服务器发送的访问令牌 . 现在我需要发送此访问令牌与每个http请求我谷歌 Map 轨道API . 我应该在http请求中将此访问令牌放在哪里?我尝试将 Headers 放入'X-Access-Token':'myaccesstoken',但是我从api得到响应,如下所示 .

body: '{\n "error": {\n "errors": [\n {\n "domain": "global",\n "reason": "required",\n "message": "Login Required",\n "locationType": "header",\n "location": "Authorization"\n }\n ],\n "code": 401,\n "message": "Login Required"\n }\n}\n' }

我提到谷歌 Map 轨道API官方文档https://developers.google.com/maps/documentation/tracks/auth,但无法解决此错误 .

以下是用于通过Google的OAuth 2.0授权服务器进行身份验证的代码,以及用于向Google Map 跟踪API发送请求的代码 .

var jwt = new googleapis.auth.JWT(client_email, keyFile, null, scopes, null);

jwt.authorize(function(jwtErr, tokens){
    if(jwtErr){
        return;
    }
    else{
        headers = {
            'content-type' : 'application/json',
            'X-Access-Token' : tokens.access_token
        };

        options = {
            url : 'https://www.googleapis.com/tracks/v1/geofences/list',
            headers : headers,
            method : 'POST',
        };
        request(options, function(error, response, body){
            if(error){
                return; 
            }
            console.log(response);
        });
    }
});

1 回答

  • 0

    找到解决方案后,访问令牌应该放在header:{'Authorization':'myaccesstoken'}中,所以在更改之后,代码将如下所示 .

    var jwt = new googleapis.auth.JWT(client_email, keyFile, null, scopes, null);
    
    jwt.authorize(function(jwtErr, tokens){
        if(jwtErr){
            return;
        }
        else{
            headers = {
                'content-type' : 'application/json;charset=utf-8',
                'content-length': Buffer.byteLength(data),
                **'Authorization' : tokens.access_token**
            };
    
            options = {
                host: 'www.googleapis.com',
                path: '/tracks/v1/entities/create',
                headers : headers,
                method : 'POST',
            };
    
            var post_req = https.request(options, function(res){
                  res.setEncoding('utf8');
                  res.on('data', function (chunk) {
                      console.log('Response: ' + chunk);
                  });
            });
            post_req.on('error', function(error_msg){
                console.log(error_msg);
            });
            post_req.write(data);
            post_req.end();
        }
    });
    

相关问题