从Facebook Graph API评级电话获取评论者信息

时间:2018-05-15 15:20:06

标签: facebook facebook-graph-api facebook-javascript-sdk

我正面临Facebook Graph API的一个奇怪问题。

我的目标是获取特定的网页评分,以便在网站上展示。

我正在使用JavaScript SDK并按照文档中关于页面访问令牌的所有内容进行操作。

这是我的Facebook登录按钮,以便通过当前用户帐户授权我的应用程序(在这种情况下,它是我的)具有正确的页面管理员角色:

<fb:login-button id="fb-login-btn" scope="manage_pages,pages_show_list" onlogin="checkLoginState();">

然后,我在/ me / accounts API调用的帮助下获取了所有用户的页面:

FB.api('/me/accounts', function(response) {

  if(response && !response.errors) {
    const selectList = document.getElementById('fb-page-list');

    // Populate the list
    response.data.forEach(page => {
      var option = document.createElement("option");
      option.value = JSON.stringify({id: page.id, access_token: page.access_token});
      option.text = page.name;
      selectList.appendChild(option);
    });
  }
});

因此,当客户端选择页面名称时,它将获得正确的页面访问令牌,以便在之后进行页面特定的API调用。

然后最后一步是Page的评级调用:

FB.api(
  '/'+ page.id + '/ratings?access_token='+ page.access_token +'&limit=10?fields=reviewer{id,name,picture},rating}',
  function(response) {
    console.log(response);
  }
);

因此,当我在Graph API Explorer(由Facebook Developer界面提供)中执行该查询时,它可以完美地运行。我的评分是:

Graph API Explorer

当我在浏览器中尝试时,我也得到了我的评分但只有一些默认字段(即created_time,review_text,rating)。

审阅者字段是默认字段。所以,我确实试图在没有任何字段参数的情况下进行查询,并且它的行为相同。

最初,我认为它是关于权限的,但在文档中它说只有&#39; manage_pages&#39;需要。

我如何克服这个问题?

1 个答案:

答案 0 :(得分:2)

此处存在相同问题,但使用PHP SDK。我向Facebook支持中心询问了开发人员,他们迅速回复。根据文档,原因与最近的变化有关,在这里他们向我建议:

“对于开发模式应用,'应用用户只能访问在应用中具有角色的用户的数据。' https://developers.facebook.com/docs/apps/security请提交您的应用以进行应用审核并发布您的应用以访问用户信息。“

我还没试过,希望这可以解决我们的问题