2012-06-06 53 views
2

我正在嘗試爲我正在開發的幾個應用程序制定出最佳體系結構。在iOS/Node應用程序中使用google/twitter/linkedIn身份驗證

在這兩個應用程序中,我都想利用google/twitter/LinkedIn/etc來提供用戶身份驗證。該應用程序由iOS應用程序組成,該應用程序可以將數據發送到我在node.js中編寫的服務器。

我想利用OAuth或OpenId來處理識別上述服務器的用戶,這樣我就不必將自己的身份驗證系統。換句話說,允許用戶在選擇上傳數據時重新使用他們的ID。

我還應該注意到,除了識別用戶,獲取姓名和電子郵件地址之外,我目前還沒有打算使用他們的任何API。

我想我有兩個選擇:

  1. 將授權碼在iOS的客戶端和發送某種關鍵的與數據,它就可以驗證服務器。

  2. 保持iOS客戶端相當愚蠢,並處理來自節點服務器的授權。

我可能會更喜歡第二個選項,因爲這意味着我可以集中認證並能夠支持一個網站。這是我目前的理論。

能做任何這樣的事情的人能給我一些關於利弊的信息,OAuth或OpenId,或者一些例子的鏈接嗎?

+0

相關文章:[iOS linkedin認證](http://stackoverflow.com/questions/28491280)。 – Mogsdad

回答

2

在我們以前的應用程序中,我們選擇了兩種方法的組合。我們希望在我們需要對這些服務進行未來API調用的情況下,將我們的用戶數據集中在我們的服務器上。我們還希望爲客戶端上的用戶提供本地oAuth體驗。即:在Android和iOS上,開發人員可以通過原生Facebook應用程序(如果可用)運行單點登錄/授權,而彈出一個提供「批准」對話框的webview。在我看來,這是更好的用戶體驗。此外,對於Twitter,oAuth流程可能需要在回調中輸入PIN碼,這應該在客戶端處理。

如果您打算對這些服務進行額外的API調用,您可以將客戶端檢索到的訪問令牌傳遞給服務器進行存儲和稍後使用,前提是您希望令牌具有長期存在性(即:脫機訪問FB的許可)。

在任何情況下,這主要是用戶體驗決定。

+0

如果我理解正確,我可以在客戶端上實現OAuth代碼,以便他們可以在其設備上進行身份驗證。然後,我可以將令牌存儲在iOS客戶端上,並將其發送到服務器進行存儲。下次iOS客戶端啓動時,它可以將它的令牌發送到服務器,該服務器將其與先前存儲的令牌相匹配。匹配意味着服務器現在知道它處理的是誰。 – drekka

+1

這可以工作。對於保證不會在會話之間改變的內容,您可能會比較安全。即:該系統上用戶的ID或其唯一句柄。由於只有在客戶端驗證成功時纔會獲得該信息,因此只需向服務器發送服務名稱和ID,服務器就可以查找關聯的用戶帳戶。這將讓他們也可以通過多種服務進行身份驗證。 –

+0

嗨,@WesJohnson我有同樣的問題,但沒有找到任何答案,請回答:http://stackoverflow.com/questions/26781660/sdks-for-getting-auth-token-for-posting-上Facebook的Twitter的鏈接中,然後 – abdulrauf618

相關問題