2014-05-20 56 views
0

我需要獲取Google+中用戶的活動列表。我的編碼平臺是node.js Express框架,我正在使用google-api-nodejs-client軟件包。檢索用戶的Google+活動列表

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對象的值來發現它。

ERR --------------->

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

特別是在調試這樣,你也應該考慮一下什麼是「犯錯」返回。檢查幷包含它作爲問題的一部分。 – Prisoner

回答

1

如果您提供的err對象的價值,但這裏的一些想法這將有助於:

  1. 你有Google+的API開啓您的項目?請參閱https://console.developers.google.com/以及項目的API和身份驗證部分以啓用API。

  2. 您是否請求正確的用戶配置文件數據範圍。請參閱https://developers.google.com/apis-explorer/#p/plus/v1/plus.activities.list以嘗試請求。單擊該頁面上的OAuth按鈕可以查看您可能想向用戶請求的不同類型的範圍。有些我現在看到的範圍是:

  3. 嘗試增加API請求的空主體字段。這是當前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); 
        }); 
    
+0

你是對的。原因是你的第二點提到的範圍。正如你所說,我記錄了err值。 – Foreever

+0

我只收到我加入的公開信息。如何獲取他人的公開信息? – Foreever

1

我認爲問題是,你指定一個空領域參數client.plus.activities.list(),而不是不提供字段參數。這告訴它不返回結果的字段。由於字段參數是可選的,因此可以完全省略它。

試着這麼做:

client 
     .plus.activities.list({ 
      userId: 'me', 
      collection: 'public', 
      maxResults: 100 
     }) 
+0

我把它改爲你的答案。但仍然沒有結果。 – Foreever