Express Routing

时间:2018-01-11 09:50:40

标签: javascript node.js google-api google-analytics-api google-api-nodejs-client

我使用NodeJS,Express和GoogleApis和Google-oauth-jwt进行身份验证。

我在从第二个promise函数(getData)获取数据时遇到问题。

当我在getToken()中使用res.json(myToken)然后(function(myToken))时,我可以成功检索一个令牌。但是我在getData(令牌)函数中使用这个令牌时遇到了问题

当我终于能够通过getData函数从googleapis检索数据时,我想将这些数据保存到MongoDB中,以减少对Google Analytics API的调用。

这些是我得到的错误:

  

2018-01-11T09:46:55.063Z 5ac2c6f1-f6b4-11e7-a2e2-c50e9f880e28令牌:XXXXXXXXXXXXXXX

     

2018-01-11T09:46:55.148Z 5ac2c6f1-f6b4-11e7-a2e2-c50e9f880e28 {错误:   在新的RequestError处于RequestError.Error(native)时需要登录   (/var/task/node_modules/google-auth-library/lib/transporters.js:34:42)   在Request._callback   (/var/task/node_modules/google-auth-library/lib/transporters.js:96:27)   在Request.self.callback   (/var/task/node_modules/request/request.js:186:22)在emitTwo   (events.js:106:13)在Request.emit(events.js:191:7)at   请求。   (/var/task/node_modules/request/request.js:1163:10)在emitOne   (events.js:96:13)在Request.emit(events.js:188:7)at   IncomingMessage。   (/var/task/node_modules/request/request.js:1085:12)代码:401,错误:   [{domain:' global',reason:' required',message:' Login Required',   locationType:'标题',位置:'授权' }]}

     

2018-01-11T09:46:55.153Z 5ac2c6f1-f6b4-11e7-a2e2-c50e9f880e28(节点:1)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:需要登录

这是我的代码:

var express = require('express');
var router = express.Router();
var googleAuth = require('google-oauth-jwt');
var google = require('googleapis');
var app = express();

/* get GA data*/
router.get('/kpis', function(req, res, next) {
  // get token with googleapis library
  function getToken() {
       return new Promise(function(resolve,reject) {
         googleAuth.authenticate({
           email: 'serviceAcountemail@email.com',
           key: "getting key",
           scopes: ['https://www.googleapis.com/auth/analytics.readonly']
           }, function (err, token) {
            if (err){
              reject(err)
            } else
             resolve(token)
          });
       });
   }

   function getData(token){
     return new Promise(function(resolve,reject){
       var analytics = google.analytics('v3');
       var VIEW_ID = 'ga:profileid';
       analytics.data.ga.get({
           'auth': token,
           'ids': VIEW_ID,
           'metrics': 'ga:uniquePageviews',
           'dimensions': 'ga:pagePath',
           'start-date': '30daysAgo',
           'end-date': 'yesterday',
           'sort': '-ga:uniquePageviews',
           'max-results': 10,
       }, function (err, response) {
           if (err) {
             console.log(err)
             reject(err)
           } else
             console.log('Response:',response)
             resolve(response)

       });
    });
   }

   getToken().then(function(myToken) {
     // get the token, make a call to google analytics api with token included in auth
     console.log('token:', myToken);
     getData(myToken).then(function(results){
        // show results on screen in json
        res.json(gaResults);
     });
   });
});
/* end of get GA data*/
module.exports = router;

我的问题:

0 个答案:

没有答案