2012-01-26 37 views
2

我有一個應用程序,我要檢查用戶的在線狀態。現在,當我檢查時,它告訴我每個人都處於離線狀態。無法獲得正確的用戶在線狀態

用戶嚮應用程序授予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] =>離線

任何幫助得到這個工作將不勝感激。謝謝大家的時間。

回答

0

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'來查明這一點。不幸的是,我的問題依然存在:無論如何,我都會**脫機**。而且我在線,我沒有聊天隱私設置。 –

1

我成功地用這個FQL查詢: -

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

讓所有的在線朋友。輸出爲「空閒」,「活動」和「離線」。所有的值都是絕對正確的。