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

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

尝试类似:

    client
        .plus.activities.list({
            userId: 'me',
            collection: 'public',
            maxResults: 100
        })
于 2014-05-20T12:44:15.840 回答
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);
        });
    
于 2014-05-21T05:17:25.163 回答