2012-03-06 27 views
12

我正在用Web客戶端和iPhone客戶端構建一個應用程序。OAuth flow,iPhone - > Rails - > Facebook

在Web客戶端我通過Facebook與Omniauth驗證用戶身份,然後用戶可以張貼在應用Facebook的行動。這很好。

我遇到一些問題,實現從iPhone應用程序的驗證流程。

我已經在Rails應用中設置了Gatekeeper作爲OAuth提供者。雖然我不確定應該如何實施身份驗證流程。

我想出這個: 用戶可以登錄到Facebook在iPhone,並獲得令牌。然後想法是將令牌和Facebook uid一起發送到rails應用程序,存儲它,並使用Omniauth驗證用戶身份。用戶通過身份驗證後,使用門衛生成令牌並將其發送回iPhone應用。

如果是第一次用戶驗證對Rails應用程序,一個新的用戶將被創建。

然後,用戶可以做到對一個JSON-API和Rails應用程序將負責Facebook的整合,因爲Facebook的令牌的動作被存儲在用戶的記錄。

的應用也將跨越多個域,所以我需要有註冊,以提供不同的回調URI的多個看門的應用。

這似乎是一個可行的解決方案嗎? 安全嗎? 是否有替代流程/方法?

謝謝。

+3

我正在考慮相同的架構,我認爲這是合法的。在您的描述中,您錯過了「rails對Facebook的身份驗證FB UID +訪問令牌」,以確保您沒有被欺騙。 – Hollownest 2012-05-09 12:28:49

+1

這被稱爲「斷言」,看起來正是你所描述的。從https://github.com/songkick/oauth2-provider:「OAuth客戶端將使用其他框架對用戶進行身份驗證並獲取令牌,然後將此令牌交換爲您域中的訪問令牌。」 – Hollownest 2012-05-09 12:37:45

+0

您是否最終使用oauth2-provider? – 2012-11-02 21:46:56

回答

8

我概括爲去解決辦法如下:

  1. 客戶開始宣誓流瓦特/ Facebook的(使用登錄按鈕等)
  2. 客戶獲得身份驗證令牌和回發到服務器
  3. 服務器查找通過FB API調用了用戶瓦特/令牌
  4. 服務器並查找/基於FB ID
  5. 用戶已經登錄,如果創建的用戶與FB ID關聯查找用戶成功

我有一個圖表,在這裏更詳細:http://www.eggie5.com/57-ios-rails-oauth-flow

相關問題