检索用户的Google+活动列表

时间:2014-05-20 11:58:22

标签: express google-api google-plus google-api-nodejs-client

我需要在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"
   }
}

2 个答案:

答案 0 :(得分:1)

我认为问题在于您要为client.plus.activities.list()指定一个空字段参数,而不是根本不提供字段参数。这告诉它不返回结果的字段。由于 fields 参数是可选的,因此您可以完全省略它。

尝试类似:

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

答案 1 :(得分:1)

如果你提供err对象的价值会有所帮助,但这里有一些想法:

  1. 您的项目是否启用了Google+ API?请参阅https://console.developers.google.com/以及项目的API和auth部分以启用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);
        });