无法在FaceBook上获得我的好友列表的在线状态


Unable to Get the Online Presence of my friends list on FaceBook

这是我的fql:

$fql = "SELECT uid, name, online_presence, status 
         FROM user 
        WHERE uid IN ( SELECT uid2 FROM friend WHERE uid1 = '".$user_id."') ";

online_presence总是返回null

您的查询有错误…

只是替换

WHERE uid IN

WHERE 2 IN
查询

$fql = "SELECT uid, name, online_presence, status 
         FROM user 
        WHERE 2 IN ( SELECT uid2 FROM friend WHERE uid1 = '".$user_id."') ";

SQLFiddle演示

如果您尝试在没有Facebook访问令牌的情况下查询Facebook,您将无法检索online_presence键值。例如:

SELECT uid, name, online_presence, status FROM user WHERE uid IN (4,5,6)

没有访问令牌集,返回:

{
  "data": [
    {
      "uid": 4, 
      "name": "Mark Zuckerberg", 
      "online_presence": "", 
      "status": null
    }, 
    {
      "uid": 5, 
      "name": "Chris Hughes", 
      "online_presence": "", 
      "status": null
    }, 
    {
      "uid": 6, 
      "name": "Dustin Moskovitz", 
      "online_presence": "", 
      "status": null
    }
  ]
}

然而,对于访问令牌集,返回:

{
  "data": [
    {
      "uid": 4, 
      "name": "Mark Zuckerberg", 
      "online_presence": "offline", 
      "status": null
    }, 
    {
      "uid": 5, 
      "name": "Chris Hughes", 
      "online_presence": "offline", 
      "status": null
    }, 
    {
      "uid": 6, 
      "name": "Dustin Moskovitz", 
      "online_presence": "offline", 
      "status": null
    }
  ]
}

确保您正在设置一个有效的Facebook访问令牌(在PHP中使用官方Facebook SDK,看起来像:$facebook->setAccessToken($your_access_token);),并具有访问数据的适当权限。

权限很可能是两个响应中"status"返回null的原因。我不是扎克伯格先生的朋友