Facebook App设置决定数据是否发布?

时间:2014-02-27 18:20:22

标签: php facebook facebook-graph-api sdk facebook-fql

我正在尝试使用PHP SDK检索授权Facebook用户有权通过Facebook应用程序更新的页面列表。

require_once('facebook.php');

$config = array(
  'appId'  => APPID,
  'secret' => SECRET,
  'cookie' => true,
);

$facebook = new Facebook($config);

$params = array(
    'method' => 'fql.query',
    'query' => "select page_id, name from page where page_id in (select page_id from page_admin where uid = me())",
);

$result = $facebook->api($params);

print_r($result);

当我们将此FQL放入Facebook的Graph Explorer中进行测试时,它会为我们提供以下(正确的)数据。

{
  "data": [
    {
      "page_id": 1234567689,
      "name": "A page we have access to"
    },
    {
      "page_id": 987654321,
      "name": "Another page we have access to"
    }
  ]
}

当我们使用PHP SDK时,它返回一个没有值的数组。我已经确认我们在应用程序设置中拥有manage_pages权限。此外,如果我将FQL参数简化为:

    $params = array(
        'method' => 'fql.query',
        'query' => "SELECT name from user where uid = me()",
    );

这适用于Graph Explorer和Facebook PHP SDK。这让我相信问题是应用程序区域中的一些隐藏设置正在影响第一个FQL查询。顺便说一句,在使用Graph Explorer时,我们成功返回数据所需的唯一权限是manage_pages,因此我认为这不是权限问题。

有没有人遇到此问题或者有没有人成功返回Facebook用户管理的网页列表?关于如何开始调试的任何想法?有没有其他方法来检索我们想要的信息,以防这是某种错误?

1 个答案:

答案 0 :(得分:0)

$loginUrl = $facebook->getLoginUrl(
        array(
            'scope'        => 'manage_pages,read_stream',
            'redirect_uri' => RETURN_ADDRESS,
        )
);

当您生成登录请求时,您可以选择设置应用程序的范围。在我们的范围内,即使应用程序确实没有设置manage_pages。

希望这会有所帮助 - 一天中的大部分时间都会花费很多时间来意识到您要求的内容和提供的内容是分开管理的。