0

Google+ でユーザーのアクティビティのリストを取得する必要があります。私のコーディング プラットフォームは node.js Express フレームワークで、google-api-nodejs-client パッケージを使用しています。

var googleapis = require('googleapis');
var auth = new googleapis.OAuth2Client();
var accessToken="XXXXXX......";
googleapis
    .discover('plus', 'v1')
    .execute(function (err, client) {
        if (err) {
            console.log('Problem during the client discovery.', err);
            return;
        }
        auth.setCredentials({
            access_token: accessToken
        });
        client
            .plus.people.get({ userId: 'me' })
            .withAuthClient(auth)
            .execute(function (err, response) {
                console.log('My profile details------>', response);
            });
        client
            .plus.activities.list({
                userId: 'me',
                collection: 'public',
                maxResults: 100
            })
            .withAuthClient(auth)
            .execute(function (err, response) {
                console.log('err----------------------------->',err);//EDIT
                console.log('activities---------------------->', response.items);
            });
    });

プロフィールの詳細を取得しました。しかし、アクティビティは値を返しています: null. Google+ ページをチェックして、投稿が公開されていることを確認しました。また、いくつかの投稿を自分で「公開」に共有しました。私のコードでバグを見つけるのを手伝ってください。

編集

実際には、エラーがあります。Ryan Seys のアドバイスに従って、コンソールに err オブジェクトの値を記録することで見つけました。

エラー------->

{
   "error": {
     "errors": [
      {
         "domain": "global",
         "reason": "insufficientPermissions",
         "message": "Insufficient Permission"
      }
     ],
   "code": 403,
   "message": "Insufficient Permission"
   }
}
4

2 に答える 2

1

errオブジェクトの値を提供していただけると助かりますが、いくつかの考えを次に示します。

  1. プロジェクトで Google+ API を有効にしていますか? API を有効にするには、 https://console.developers.google.com/およびプロジェクトの API と認証セクションを参照してください。

  2. ユーザー プロファイル データの適切な範囲を要求していますか。リクエストを試すには、https://developers.google.com/apis-explorer/#p/plus/v1/plus.activities.listを参照してください。そのページの OAuth ボタンをクリックして、ユーザーからのリクエストを試みるさまざまなタイプのスコープを確認します。私が今見ているスコープのいくつかは次のとおりです。

  3. API リクエストに空の body フィールドを追加してみてください。{}これは現在の API クライアントの警告であり、一部のリクエストでは、パラメーター オブジェクトの後にデフォルトの空を入力する必要があります。

    client
        .plus.activities.list({
            userId: 'me',
            collection: 'public',
            maxResults: 100
    
        }, {}) // <--- see the extra {} here! 
    
        .withAuthClient(auth)
        .execute(function (err, response) {
            console.log('activities---------------------->', response.items);
        });
    
于 2014-05-21T05:17:25.163 に答える