2012-04-21 173 views
3

我見過很多示例,並閱讀了一些文章以更好地瞭解訪問令牌過期情況,在本文中,Access Token Expiration已得到很好的解釋。如何獲得過期Facebook用戶訪問令牌的通知

我知道如何更新到期訪問令牌。但是,問題在於,正如文章中所解釋的那樣,訪問令牌可能有四個原因到期。

因此,當訪問令牌過期並且可以在任何時候都沒有確定性。傳統的解決方案是使用offline_permision,這將很快被FB棄用。

這裏是我想要實現的:當用戶使用我們的Facebook應用程序

  1. 一旦訪問令牌到期,同時,我想FB到通知我。

  2. 一旦收到通知,更新訪問令牌。

我不認爲以下達到我想要的。

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    alert('The status of the session is: ' + response.status); 
}); 

因此,有沒有辦法從訪問令牌過期時從FB有通知?

回答

2

當您嘗試訪問帶有過期令牌的API時,Facebook將發回一條錯誤消息。您只需在處理Facebook響應的回調函數中檢查該錯誤,並且如果存在錯誤,請刷新令牌並再次嘗試API調用。

從Facebook:

Facebook的不會通知您,先前發出的訪問令牌變得無效。除非您持續保留了與訪問令牌一起傳遞給應用程序的失效時間,否則當您嘗試向API發出請求時,通常情況下,您的應用程序首先知道給定令牌已變爲無效。

+0

是的,我知道Facebook將返回響應。我更喜歡基於事件的通知,意味着當它因任何原因失效時,它會通知FBevent訂閱一些內容。 但是,正如你幫助強調Facebook不通知。 hmnn ...好吧,換一種方式,怎麼樣把有效期延長到至少一天?那個怎麼樣? – MrCooL 2012-04-22 08:36:39

+1

你可以用循環間隔創建你自己的通知服務,但是這看起來確實沒有什麼幫助,因爲如果令牌在間隔期間過期,你仍然需要處理錯誤。 至於擴展令牌,不幸的是,這是不可能的。你會在令牌(大部分時間)內獲得一個到期時間,所以你可以做一些事情(設置一個事件來在令牌過期之前刷新令牌),但是它可能還會提前過期。 我同意我們可以通過FB.event.subscribe訂閱一個事件 – LocalPCGuy 2012-04-22 18:51:41

相關問題