2

我的情況仍不清楚 - 2012年7月5日之後,如果與訪問令牌關聯的用戶從Facebook註銷,桌面應用程序是否能夠訪問Facebook數據? 這裏正在談論關於全部刪除離線訪問的全部內容,還是僅限於60天的離線訪問限制?離線訪問。 7月5日之後,將桌面應用程序如果與訪問令牌關聯的用戶從FB註銷,能夠訪問FB數據?

文檔 - https://developers.facebook.com/roadmap/offline-access-removal/沒有給出明確的答案(恕我直言)。 Quote:「一旦啓用遷移設置,桌面應用程序將自動獲得用戶access_tokens返回具有較長的到期時間。但是,如果用戶沒有再次登錄到應用程序,就沒有辦法獲得長命的用戶access_token。「

截至4月30日,我可以爲桌面應用程序請求具有'offline_access'權限的訪問令牌(使用URL:https://graph.facebook.com/oauth/authorize?client_id=APPLICATION_ID&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=manage_pages,read_stream,publish_stream,offline_access )。一切工作正常。即使用戶註銷。儘管已爲應用程序啓用了「刪除offline_access權限」。

您的答案將非常感謝。

+0

確實是一個非常好的問題:) – naveen

回答

2

剛剛完成了一個補丁以適應這些更改。至少根據我的經驗,我們在一個Web應用程序中工作,更新訪問令牌的過程非常簡單,只需將所有內容更改爲JavaScript SDK並依靠瀏覽器的登錄狀態即可。這似乎比採用每個操作交叉檢查服務器端保存的過期訪問令牌更合乎邏輯的方法來查看它是否仍然很好。

本質上,桌面實現會發生什麼情況是默認訪問令牌的壽命更長,但仍需要在60天結束時續訂。您應該在您的應用程序中使用邏輯來檢查訪問令牌的有效性,然後對其採取措施(或者只是嘗試並提示失敗),然後提示用戶登錄並在access_token過期時重新驗證。只要這個邏輯到位,過期的訪問令牌將觸發重新驗證。

如果您的應用程序接收短到期的訪問令牌......

如果您想刷新仍然有效,長壽命的access_token,您將獲得第一的access_token新短命的用戶和然後在下面調用相同的端點。返回的access_token將具有新的長期到期時間,但是,access_token本身可能與以前授予的長期存取令牌相同或不同。

短期訪問令牌(僅在登出之前只持續一個會話的類型)將需要轉換爲使用該文章中記錄的端點的六十天長期訪問令牌。配置爲新設置的桌面應用程序默認會收到這些類型的內容,但這些應用程序在60天后仍需要使用新登錄名重新生成。

我同意這實施起來很麻煩,特別是對於桌面應用程序,但從Facebook的角度來看,它肯定會更安全。如果您開始將訪問令牌視爲臨時而不是永久訪問憑據,並開始通過curl或其他一些http post機制來更改邏輯以檢查有效性,而不是引用數據庫,那麼您將更容易使用調整。不要讓您的體系結構假定已保存的訪問令牌的存在保證訪問,並且一定要將它們交叉檢查到facebook端點,並在必要時提示重新登錄。

+0

不完全是特別真實的報價。這是爲JavaScript的SDK。請閱讀「如果啓用了遷移,如果access_token是從服務器端OAuth調用生成的,則缺省情況下,生成的access_token將具有較長的到期時間。如果在仍存在有效的長期用戶access_token時進行調用對於那個用戶來說,從第二次調用返回的用戶access_token可能是相同的或者可能已經改變,但是在任何一種情況下,過期時間都將被設置爲很長的到期時間。「 – naveen

+0

@naveen你是對的,我會編輯得更清楚些。我不確定的是,如果桌面版本中的代碼(即OP所討論的應用程序的IE)將被視爲客戶端或「服務器」用於到期時間的目的,因爲我認爲它接收到'login_request' var在登錄時就像在瀏覽器環境中一樣。我試圖做的一點是開始假設不好的訪問令牌,所以過期的令牌總是會在邏輯中啓動登錄提示,並遠離數據庫依賴訪問令牌asap =) – DeaconDesperado

+0

它的服務器端,因爲它不使用JavScript API ...其實我有一個時間不習慣'offline_access' – naveen

相關問題