2012-05-15 97 views
2

我有一個Facebook應用程序在粉絲頁面上執行預定的帖子。檢測Facebook OAuth令牌過期

要做到這一點,應用程序會獲取一個OAuth令牌用於在頁面上發佈。要獲取此令牌,用戶需要訪問該應用程序。然而有時Facebook會使這些令牌失效,至少如果用戶更改了他們的FB密碼,並且在其他一些與安全相關的情況下也如此。

發生這種情況時,應用程序將無法發佈預定的帖子,用戶不滿。我應該如何解決這個問題?當令牌過期時,我可以通過電子郵件向用戶發送電子郵件,但是如何檢測到期?鑑於我有100,000多個用戶,經常輪詢令牌的代價會很高。

+0

我試圖做同樣的事情,但對我來說令牌甚至不超過幾個小時。代幣與你持續多久? – BeemerGuy

+0

同樣的事情在這裏:http://stackoverflow.com/questions/10486975/facebook-access-tokens-expiring-for-unknown-reason - 將很樂意爲此解決方案... – avs099

+0

有關「如何檢測到期」 - 發佈到粉絲頁面時,您會收到OAuthException:https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/ - 或者您想要是否提前檢測?然後每晚做「/ <> /?accessToken = <<來自DB的令牌>>」檢查。據我所知,沒有別的東西。 – avs099

回答

3

做好直接回答你的問題,在這裏你去:Facebook Debugger

輸入ACCESS_TOKEN有檢查它的有效性和其他信息。但我知道這並不能解決您的問題。我可以幫助你在正確的方向。


您看到令牌有效性受到您從用戶請求的權限的影響。有這個offline_access權限,它爲您提供一個不會超時的訪問令牌,而不是常規的長達一小時的令牌。我相信你知道這一點,因爲你已經能夠安排用戶的職位。

不幸的是,offline_access現在是deprecated by Facebook (see this link)。從現在起,即使沒有許可,Facebook也會默認給予我們2個月的access_token。從那時起,我們需要「刷新」或擴展訪問令牌。閱讀更多關於該鏈接。

而關於你在使用中更改密碼,註銷等問題,那麼Facebook有它自己的dedicated blog post about it as well, see here


如果你想利用自己檢查令牌的有效性的路徑,你可以設置運行每小時或每天(取決於你),然後針對所有令牌的快速API調用(/我)一個cron。如果失敗或產生錯誤,則令牌過期。

如果你每分鐘都做一次,那麼要好得多:要檢查10到20個標記,所以它在你的服務器上執行100,000次以上的調用時不會有很大的負擔。

+0

如果令牌被Facebook取消,「refreshing」將無濟於事。 – avs099

+0

是,過期令牌無法刷新。即使原因是超時,也不是密碼更改。如果您也不想每次都設置CRON進行檢查,那麼您可以在計劃的帖子實際失敗時發送電子郵件。要求他們再次登錄並立即發佈。 – dragonjet

+0

感謝dragonjet。通過檢查標記的有效性,當然我的意思是通過軟件。但是,執行數百萬次API調用仍然很昂貴。我也在發送電子郵件,但是目前我已經在我沒有使用該令牌之後這麼做了(因爲對於令牌有效性進行持續輪詢會花費過高),所以從客戶角度來看,我的應用程序隨機不起作用我收到很多投訴。 – Bemmu