这是我的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
的原因。我不是扎克伯格先生的朋友