2016-08-29 7 views
0

このチュートリアルhttp://www.2ality.com/2015/10/google-analytics-api.htmlに従うことにより、Node.jsからGoogle AnalyticsコアレポートAPIを使用しようとしています。私はbabel-node mygaapiscript.jsと私の端末からスクリプトを直接起動しています。次のエラーが表示されます。ノードとGA解析APIでnullエラーの 'join'プロパティを読み取ることができません。

/Users/me/Desktop/dashboard/dashboard-ga/node_modules/gtoken/lib/index.js:160 
     this.scope = options.scope.join(' '); 
           ^

    TypeError: Cannot read property 'join' of null 
     at GoogleToken._configure (/Users/me/Desktop/dashboard/dashboard-ga/node_modules/gtoken/lib/index.js:160:31) 
     at new GoogleToken (/Users/me/Desktop/dashboard/dashboard-ga/node_modules/gtoken/lib/index.js:19:8) 
     at JWT.GoogleToken [as gToken] (/Users/me/Desktop/dashboard/dashboard-ga/node_modules/gtoken/lib/index.js:17:12) 
     at JWT._createGToken (/Users/me/Desktop/dashboard/dashboard-ga/node_modules/google-auth-library/lib/auth/jwtclient.js:218:24) 
     at JWT.refreshToken_ (/Users/me/Desktop/dashboard/dashboard-ga/node_modules/google-auth-library/lib/auth/jwtclient.js:133:15) 
     at JWT.authorize (/Users/me/Desktop/dashboard/me-MacBook-Pro:routes 

このエラーは何を意味していますか?ここ

は私のスクリプトです:私は急行内でそれを使用していますので、

#!/usr/bin/env babel-node 
import google from 'googleapis'; 
'use strict'; 

import key from './client_id.json'; 
const VIEW_ID = 'ga:70810323'; 

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

    jwtClient.authorize(function (err, tokens) { 
     if (err) { 
     console.log(err); 
     return; 
     } 
     let analytics = google.analytics('v3'); 
     queryData(analytics); 
    }); 

    function queryData(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}; 

module.exportsを手に入れました。

答えて

1

google.auth.JWT()へのあなたの議論は間違っているようです。 the documentationの例とgoogleapis repo hereのJWTの例を参照してください。 2番目の引数にキーファイル名を渡さない場合、3番目の引数はリテラルキーデータでなければなりません。したがって、第3引数にnullを追加してください:

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

ありがとうございました。私はドキュメンテーションとJWTの例を読みましたが、それが機能していなかったので、コードをちょっと乱してしまったと思います。しかし、今私は真新しいエラー 'at Error(native) errno:-63、 code: 'ENAMETOOLONG'、 syscall: 'open'、'私の秘密鍵について。 –

+1

'key.private_key'は*実際の秘密鍵のデータを含んでいますか?それともファイル名ですか?それが実際のキーデータであれば、2番目と3番目の引数を入れ替える必要があります。 – mscdex

+0

ok ok。私は今、ドキュメントを理解しています。この点は私には分かりませんでした。 「ユーザーはGoogle Analyticsアカウントを持っていません」というエラーが表示されているので、動作していると思います。私のGAアカウントでちょっと遊ぶ必要があります。ありがとう! –

関連する問題