2011-09-14 27 views
0

我設置它的方式是,當用戶第一次訪問該網站時,它會要求他們使用Facebook登錄。它獲取訪問令牌並在我的網站上創建會話。我應該如何處理用戶註銷Facebook,但仍然登錄到我的網站?

如果用戶在任何時候退出Facebook,在另一個選項卡中說,會話將仍然存在於我的應用程序中。

我可以看到檢測用戶是否仍然登錄Facebook的唯一方法是重新請求訪問令牌,因爲似乎沒有辦法檢查現有訪問令牌是否仍然有效。

我也嘗試簡單地做:

file_get_contents('https://graph.facebook.com/me?access_token=xxx') 

,但由於令牌不再有效(作爲用戶已註銷)的file_get_contents返回一個錯誤,雖然,在瀏覽器中查看此表示的OAuth例外,但IM假設的file_get_contents是因爲HTTP響應代碼示數

+0

另外,我寧願沒有去通過從得到一個代碼的整個兩個步驟查詢字符串然後發送關閉。我希望我的網站能夠檢測到當前的訪問令牌不再有效,並通知用戶他們必須重新登錄到Facebook – Tim

回答

2

你可以做這樣的事情,我認爲:

@$data=file_get_contents('https://graph.facebook.com/me?access_token=xxx'); 
foreach ($http_response_header as $rh) if (substr($rh, 0, 4)=='HTTP') list(,$status,)=explode(' ', $rh, 3); 
if ($status==200 && $data) 
    //Token is good, parse data 
else 
    //Token is no good 
+0

冠軍!這是我正在尋找的確切解決方案! – Tim

0

有很多的問題在這裏..我只想分享一些見解:

  1. 如果用戶在瀏覽器的1個選項卡中註銷FB,他將從所有選項卡註銷

  2. 如果FB應用程序詢問用戶的權限(如offline_acess),他們可以向他們顯示他們想要的任何相關內容保持FB ID的一些疼痛和自己的ID映射..應需要獲取任何信息ofcourse

  3. 的的access_token保留的access_token有效的,如果你還沒有明確的要求與到期日的..的access_token

  4. 如果用戶更改任何FB憑證,則

    access_token會更改。其中FB應用程序無法檢測

+0

1.是的,我知道,當我說會話時,我的意思是我自己的應用程序會話 – Tim

+0

2.但是,如果用戶點擊我的頁面,然後例如進入另一個選項卡並恰好從Facebook註銷,返回到我的網站,並嘗試執行操作,該操作要求應用程序說爲該用戶寫入狀態,應用程序需要知道用戶已註銷Facebook,以便它可以請求新的訪問令牌 – Tim

相關問題