无法为某些用户获取页面

时间:2013-12-12 10:46:49

标签: php facebook-fql

我开发了一个PHP应用程序,如果用户喜欢某个页面,只需要获取。

我以这种方式登录用户:

$this->_facebook = new Facebook(array(
        'appId' => "123",
        'secret' => "346",
    ));
$this->_facebookUser = $this->_facebook->getUser();
$this->_facebook->api('/me');

然后

    $checkIfUserLikePage = $this->_facebook->api(array(
        "method" => "fql.query",
        "query" => "select uid from page_fan where uid=me() and page_id=" . $pageid,
    ));

这主要起作用,但对于某些用户没有,它返回一个空数组。我在网上查了一下,我的应用可能缺少* user_likes *权限。事实上我没有这个许可。所以我再次发现我应该添加权限,卸载应用程序并重试。

所以我:

  1. 已登录developer.facebook.com>应用> myapp >应用详情>配置App Center权限
  2. 将“user_likes”添加到用户和朋友权限文本区域
  3. 已保存
  4. 要求测试用户删除 myapp
  5. 要求测试用户访问该应用
  6. 结果我仍然为用户获得一个空数组。 还有什么不对?感谢

1 个答案:

答案 0 :(得分:5)

请勿将应用中心的权限与传递给您的范围的权限混淆。在提示用户输入权限时,您是否已将“user_likes”添加到范围?

使用JS-SDK,你可以这样做,例如:

FB.login(function(response) {
    // Do some fancy stuff
}, {scope: 'user_likes'});

还要确保您拥有有效的用户访问令牌。您的PHP-SDK提供了一个名为“getAccessToken()”的方法,该方法返回当前的访问令牌。

您也可以简单地尝试打印getUser()的结果,该结果返回当前用户的userID。如果你得到0,你可以非常肯定用户没有与你的Facebook应用程序连接,因此你无法在FQL查询中使用我()。

还使用/{user-id}/permissions查询图API。您将获得一个返回的json对象,其中包含用户提供的所有权限。当然,您需要与您的应用程序建立有效的关联用户才能执行此操作。

我希望我能给你一些有用的建议。如果没有任何帮助尝试发布更多代码。

快乐的编码!