7

私は nodejs を使用しています。Google アナリティクスからのデータを表示したいと思います。

Google API Explorer で、データを取得するための次の 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}

ただし、この URL にアクセスすると、次のようになります。

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

URL を介してログインを渡し、データにアクセスするにはどうすればよいですか?

ありがとう!

4

3 に答える 3

11

Google API コンソールから、Analytics API を有効にし、最後にサービス アカウントを設定して、*.p12ファイルをダウンロードする必要があります。

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

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

パスワードを聞かれます。notasecret

これで、必要なファイルを取得できました。*.pemアカ​​ウントの電子メールは、Google API コンソールに表示されるものEMAIL ADDRESSです。

このアドレスを分析アカウントに追加することを忘れないでください (参照:分析 Google API エラー 403: "ユーザーには Google 分析アカウントがありません" ) 。

次のスニペットを使用しても問題ありません。

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

var SERVICE_ACCOUNT_EMAIL = 'XXXXXXXXXX@developer.gserviceaccount.com';
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);
    });
});
于 2015-01-20T00:24:15.920 に答える
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']);
于 2016-06-14T19:02:07.993 に答える
0

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

それでも問題が解決しない場合は、Google が nodejs クライアント ライブラリ (アルファ版) をリリースしたことに注意してください: https://github.com/google/google-api-nodejs-client

于 2013-12-05T01:50:30.947 に答える