2013-11-01 37 views
2

我在寫一個IOS SDK並實現oauth2.0流程。在IOS中實現Oauth2.0流程

我在IOS SDK以下OAuth2.0的流動,使開發人員讓我的用戶帳戶控制:

  • 打開了的mysite/OAuth2.0的作爲URL
  • 用戶登錄網頁流量在/寄存器。
  • Mysite.com重定向到特殊的網址,在查詢字符串中有代碼或錯誤。
  • Webview(通過shouldStartLoadWithRequest函數)可以識別特殊的url並自行關閉。

然後它將代碼傳遞給父控制器的委託函數。

[self.delegate processOauth2.0Code: code] 

如果存在錯誤(也許用戶否認的OAuth2.0),它創建NSError對象併發送NSError對象到一個單獨的委託功能)

[self.delegate processOAuth2.0Error: error] 
  • 父控制器功能然後將代碼發送到Web服務器
  • Web服務器使用帶有其應用程序密鑰的代碼對我的站點進行api調用以檢索訪問令牌。

這樣的Oauth2.0流程是如何在移動應用程序中設計的?

你們對改善設計有什麼建議嗎?

爲代碼和錯誤分配兩個委託函數是否正常?

回答

0

上述過程看起來是正確的,但是我並不熟悉所有的細節。原因是有很多OAuth2庫允許你將這個過程視爲一個黑匣子。

熱門的OAuth提供者:

  • 很多人的使用AFNetworking其OAuth的exentensions。

  • 我使用GTMOAuth2,它可以通過CocaoPods進行安裝。它包含用於身份驗證(即獲取,驗證或刷新令牌)以及發送網絡請求的方法。我只是將它用於身份驗證部分,使用另一個HTTP堆棧,我只是將OAuth令牌添加爲請求標頭。

要使用GTMOAuth2:

  • 它可以是一個有點複雜設置。比適合SO回答的代碼多一點。基本上,你添加一個GTMOAuth2ViewControllerTouch到你的窗口,並用它來收集憑據。
  • 測試它的最好方法是運行示例,然後修改它們以與您自己的後端對話。運行完畢後,將代碼移植到您的應用中。

我建議您使用OAuth庫,而不是嘗試自己實現它。