在IOS中实现Oauth2.0流程

时间:2013-11-01 21:33:45

标签: ios objective-c

我正在编写IOS SDK并实现oauth2.0流程。

我在IOS SDK中有以下oauth2.0流程,允许开发人员控制我的用户帐户:

  • 使用mysite / oauth2.0打开webview作为url
  • 用户登录/注册。
  • Mysite.com会在查询字符串中使用代码或错误重定向到特殊网址。
  • Webview(通过shouldStartLoadWithRequest函数)识别特殊网址并自行关闭。

然后将代码传递给父控制器的委托函数。

[self.delegate processOauth2.0Code: code]

如果有错误(可能是用户拒绝了oauth2.0),它会创建NSError对象并将NSError对象发送到单独的委托函数中)

[self.delegate processOAuth2.0Error: error]
  • 父控制器功能然后将代码发送到Web服务器
  • Web服务器使用带有应用程序密钥的代码对我的站点进行api调用以检索访问令牌。

这样的Oauth2.0流程是如何在移动应用程序中设计的?

你们对我改进设计有什么建议吗?

代码和错误有两个委托函数是否正常?

1 个答案:

答案 0 :(得分:0)

上述过程看起来是正确的,但我并不熟悉所有细节。原因是有很多OAuth2库允许您将此过程视为一个黑盒子。

热门OAuth提供商:

  • 很多人使用AFNetworking及其OAUth exentensions。

  • 我使用GTMOAuth2,可以通过CocaoPods安装。它包含用于身份验证(即获取,验证或刷新令牌)以及发送网络请求的方法。我只是将它用于身份验证部分,使用另一个HTTP堆栈,我只是将OAuth令牌添加为请求头。

使用GTMOAuth2:

  • 设置可能有点复杂。比适合SO答案的代码多一点。基本上,您将GTMOAuth2ViewControllerTouch添加到窗口,并使用它来收集凭据。
  • 测试它的最佳方法是运行示例,然后修改它们以与您自己的后端通信。运行后,将代码移植到应用程序中。

我建议您使用OAuth库,而不是尝试自己实现它。