目標: 允許用戶使用Facebook進行身份驗證,進入需要訪問我正在運行的受保護Web服務的iOS應用程序。在iOS應用程序中進行Facebook身份驗證的設計也可以訪問安全的Web服務
假設: 目前已具備爲那些選擇不使用Facebook的標誌使用本地認證(登記)制度
詳情:
- 假設我們希望爲用戶提供選項,以便在未爲我們的系統創建單獨帳戶/憑證的情況下使用Facebook登錄。
- 因爲我們支持我們自己的本地身份驗證機制(用戶名和密碼),所以我們擁有自己的用戶ID並頒發用於初始憑證驗證後的後續交互的身份驗證令牌。
我很驚訝Facebook在開發者文檔中沒有這方面的最佳實踐。所有現有的文檔要麼假設您正在將FB auth構建到網站中,要麼假設沒有需要驗證的服務的獨立移動應用程序。
這是我的初步想法,這將如何設計,但要驗證它是否正確。
- 客戶端彈出的Facebook的iOS登錄
- UI用戶登錄與Facebook的證書和獲得訪問令牌
- iOS應用程序通過訪問令牌我們的服務器FB圖形API使用訪問
我們的服務器會談令牌(a)驗證令牌和(b)獲取該訪問令牌的FB用戶ID。
例如我們的服務器會調用https://graph.facebook.com/me/?access_token=XYZ,這將返回JSON對象中的配置文件信息
假設它是有效的,我們的服務器從JSON對象中提取用戶ID並檢查用戶是否已經有一個帳戶。如果是這樣,我們發佈自己的身份驗證票證給客戶端用於該會話。如果用戶沒有帳戶,我們將使用Facebook用戶ID創建一個新帳戶,分配我們自己的唯一用戶ID並頒發我們的身份驗證票證。
- 然後,客戶端將身份驗證信息傳遞給需要身份驗證的後續交互。
這似乎是對我來說正確的方法,但不知道如果我失去了瘋狂的基本和錯誤的(複雜的)路徑。
這是如何解決?我正在考慮傳遞訪問令牌,並在服務器上啓動用戶。似乎學術,但我問。 – 2011-04-22 17:43:41
這是我的實現使用rails和設計: http://stackoverflow.com/questions/7232490/how-to-use-http-authentication-in-devise-with-an-optional-omniauth-token-as- – Matt 2011-12-20 06:46:14
爲什麼不傳遞整個auth_hash,而不必兩次調用FB API(一個來自iOS設備,一個來自服務器)? – bsiddiqui 2013-03-11 18:10:02