无法获得正确的用户在线状态

时间:2012-01-26 00:45:00

标签: facebook

我有一个应用程序,我想检查用户的在线状态。现在,当我检查时,它告诉我每个人都处于离线状态。

用户向应用授予user_online_presence和offline_access(以及其他一些)权限。然后我存储访问令牌。除了在线状态,我可以随时访问我需要的任何信息。

为了获得在线状态,我首先设置了访问令牌:

  

$ facebook-> setAccessToken($用户[ '的accessToken']);

然后我查询Facebook:

  

$ fql =“SELECT uid,name,online_presence,status FROM user WHERE uid =”。$ user ['FacebookID'];
  $ param = array('method'=>'fql.query','query'=> $ fql,'callback'=>'');
  $ fqlResult = $ facebook-> api($ param);

当我检查结果时,我会得到身份证,姓名和状态,但每个人都被列为离线状态,即使我知道我在线并且有效:

  

[online_presence] =>离线

任何帮助实现这项工作将不胜感激。谢谢大家的时间。

3 个答案:

答案 0 :(得分:1)

我成功地使用了这个FQL查询: -

SELECT name,online_presence FROM user WHERE uid 
IN (SELECT uid2 FROM friend WHERE uid1 = me())

获取所有在线朋友。输出为“空闲”,“活动”和“离线”。所有的数值绝对正确。

答案 1 :(得分:0)

有2个许可证

  • user_online_presence,面向用户
  • friends_online_presence,供朋友使用

http://developers.facebook.com/docs/reference/api/permissions/

答案 2 :(得分:0)

online_presence用于在线聊天,而不是在线聊天

  

用户的Facebook聊天状态。返回一个字符串,一个是活动的,   空闲,离线或错误(当Facebook无法确定存在时   服务器端的信息)。查询不返回用户的   当该信息受到隐私限制时,Facebook聊天状态   的原因。

另外,我跑fql?q=SELECT name, online_presence FROM user where uid IN (Select uid1 from friend WHERE uid2=me())并且相当准确地列出了我朋友的在线状态。只有极少数是不正确的。也许这是因为Facebook更新系统滞后,或者可能是他们长时间缓存信息等等。