2016-08-29 19 views
0

express/React/d3プロジェクト内でGoogleアナリティクスAPIを呼び出そうとしています。私はこのすべての作業を行うように近づいていますが、GA API呼び出しを行うためにjwtClientで非同期コールバックを処理する必要があります。Googleアナリティクスのjwtクライアント「promisified」の「refreshToken_」エラー

Cannot read property 'refreshToken_' of undefined 

私はまだ初心者だと私はちょうど発見してるので:あなたは私のコードで表示されるように、私は、しかし、私は次のエラーを持っている私のjwtClientに対処するためにbluebirdpromiseを使用しています約束のコンセプト私はいくつかの助けが大好きです。

ここは私のコードです。

var google = require ("googleapis"); 
    var key = require ('./client_id.json'); 
    const Promise = require('bluebird'); 
    var authorizationPromise; 

    const VIEW_ID = 'ga:80820965'; 

    let jwtClient = new google.auth.JWT(
     key.client_email, 
     null, 
     key.private_key, 
     ['https://www.googleapis.com/auth/analytics.readonly'], 
     null 
    ); 

    authorizationPromise = Promise.promisify(jwtClient.authorize)() 
    .then(function (err, tokens) { 
     if (err) { 
     throw new Error(err); 
     } 

     return google.analytics('v3'); 
    }) 
    .catch(function(err) { 
     console.log(err); 
    }); 

    var queryData = function() { 
     authorizationPromise.then(function(analytics) { 
      analytics.data.ga.get({ 
      'auth': jwtClient, 
      '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); 
       return; 
      } 
      console.log(JSON.stringify(response, null, 4)); 
      }); 
     }); 
    }; 

    module.exports = { 
     queryData 
    }; 

誰かがこのコードを書くために私を助けるが、私は本当にこのtokens変数...

感謝を理解していません。

答えて

1

はERRが.catch

によって処理されるので、あなたの .then(function(err,token)はちょうど .then(function(tokens)あるべき

Promise.promisify(jwtClient.authorize, {context:jwtClient})()

Promise.promisify(jwtClient.authorize)()

を変更してみてください

関連する問題