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

问题描述:

我有一个应用程序,我要检查用户的在线状态。现在,当我检查时,它告诉我每个人都处于离线状态。无法获得正确的用户在线状态

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

要获得网上存在,我第一次访问令牌:

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

然后我查询Facebook的:

$ FQL = “SELECT UID,名称,online_presence,FROM用户状态其中uid =” $用户[ 'FacebookID'];。
$ param = array('method'=>'fql.query','query'=> $ fql,'callback'=>'');
$ fqlResult = $ facebook-> api($ param);

当我检查的结果,我得到的ID,名称和状态,但是每个人都显示为脱机状态,即使是我,当我知道我在线和活跃:

[online_presence] =>离线

任何帮助得到这个工作将不胜感激。谢谢大家的时间。

有2个许可证

  • user_online_presence,为用户
  • friends_online_presence,朋友

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

+0

谢谢,我只需要user_online_presence,因为我只是在查看用户何时在线。 –

online_presence是上网聊天,不在线的Facebook

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

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

+0

谢谢,当用户未通过我的应用程序登录时,我正在检查用户的user_online_presence。这样,我应该能够看到他是否脱机。我在隐私设置时看到了一个空白的在线状态,所以我知道这不是问题。我没有在我的帐户中设置聊天隐私,我的朋友可以在线看到我并可以聊天,但用户 - > online_presence仍然一直在以离线状态返回我。我的其他用户也是如此。 –

+0

'online_presence'仅用于**聊天,并且**无**与用户是否已登录**您的**应用程序有关。 – DMCS

+0

谢谢。我**不**试图找出用户是否登录到** my **应用程序,我试图找出用户是否登录到Facebook并可用于聊天。所以你同意我应该可以使用'online_presence'来查明这一点。不幸的是,我的问题依然存在:无论如何,我都会**脱机**。而且我在线,我没有聊天隐私设置。 –

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

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

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