2013-09-08 4 views
6

私はnodejsを使用しています。私はGoogle Analyticsからいくつかのデータを表示したいと思います。 GoogleのAPIエクスプローラでnodejsからgoogle analyticsにアクセスする

、私は私のデータを取得するには、このURLを見つけました:私はこのURLにアクセスする場合

https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXXX&start-date=2013-08-17&end-date=2013-09-15&metrics=ga%3Avisits&key={YOUR_API_KEY} 

はしかし、私が取得:

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

は、どのように私は自分のログインを渡すことができますURLを介して私のデータにアクセスする?

ありがとうございます!

+0

ここに実際にAPIキーを配置していますか? '&key = {YOUR_API_KEY}' – datasage

+0

はい、ありました。しかし、私はトークンが必要だったようです。私は 'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXXX88&metrics=ga:visits&start-date=2013-08-17&end-date=2013-09-15&access_token= XXXXXXXX&access_type_token = bearer'となり、すべて動作します。 – sayam

+0

しかし、トークンをリフレッシュしようとすると、 'https://accounts.google.com/o/oauth2/token?client_secret = XXX&grant_type = refresh_token&refresh_token = YYYY&client_id = ZZZZ'のリクエストを使用して'エラー、無効なリクエストが発生します。 ' – sayam

答えて

0

Content-Typeをapplication/x-www-form-urlencodedに設定していますか?

あなたはまだ立ち往生している場合、それはGoogleがここにnodejsクライアントライブラリ(アルファ)を​​リリースしたことは注目に値します:https://github.com/google/google-api-nodejs-client

+0

私は最終的に、request.getを使用して成功しました。しかし、まだ、私はこの図書館を見て回ります、ありがとう。 – sayam

11

を、GoogleのAPIコンソールから、アナリティクスAPIを有効にする必要があり、最終的にセットアップAサービスアカウントをダウンロードすると、*.p12ファイルがダウンロードされます。

あなたがそれを行うために、*.pemファイルに変換する必要があり、この*.p12ファイル、から、次のコマンドを実行します。

openssl pkcs12 -in XXXXX.p12 -nocerts -nodes -out XXXXX.pem

あなたがパスワードを求められます、それはnotasecret

する必要があります

必要なファイルが*.pemになりました。アカ​​ウントのメールアドレスは、Googleのapiコンソールに表示されます。EMAIL ADDRESSです。

アナリティクスアカウントにこのアドレスを追加することを忘れないでください(参照:Analytics Google API Error 403: "User does not have any Google Analytics Account"

あなたは次のスニペットに行くに良いことがあります:

var googleapis = require('googleapis'), 
    JWT = googleapis.auth.JWT, 
    analytics = googleapis.analytics('v3'); 

var SERVICE_ACCOUNT_EMAIL = '[email protected]'; 
var SERVICE_ACCOUNT_KEY_FILE = __dirname + '/key.pem'; 


var authClient = new JWT(
    SERVICE_ACCOUNT_EMAIL, 
    SERVICE_ACCOUNT_KEY_FILE, 
    null, 
    ['https://www.googleapis.com/auth/analytics.readonly'] 
); 

authClient.authorize(function(err, tokens) { 
    if (err) { 
     console.log(err); 
     return; 
    } 

    analytics.data.ga.get({ 
     auth: authClient, 
     'ids': 'ga:XXXXXXXX', 
     'start-date': '2015-01-19', 
     'end-date': '2015-01-19', 
     'metrics': 'ga:visits' 
    }, function(err, result) { 
     console.log(err); 
     console.log(result); 
    }); 
}); 
0

xavier.seignard @私はあなたに従ってください私はp12の代わりにjsonファイルを使用しています(下のコード)。 しかし、私は疑問があります。私はnodejsで安らかなバックエンドを開発しています。 この場合、app.use()内にga.get関数を置く必要はありません。

var key = require('filename.json'); 
var authClient = new JWT(
key.client_email, 
null, 
key.private_key, 
['https://www.googleapis.com/auth/analytics.readonly']);