在IOS中实现Oauth2.0流

在IOS中实现Oauth2.0流,ios,objective-c,Ios,Objective C,我正在编写一个IOS SDK并实现oauth2.0流 IOS SDK中有以下oauth2.0流,允许开发人员控制我的用户帐户: 以mysite/oauth2.0作为url打开webview 用户登录/注册 Mysite.com重定向到查询字符串中带有代码或错误的特殊url Webview(通过shouldStartLoadWithRequest函数)识别特殊url并关闭自身 然后,它将代码传递给父控制器的委托函数 [self.delegate processOauth2.0Code: cod

我正在编写一个IOS SDK并实现oauth2.0流

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

  • 以mysite/oauth2.0作为url打开webview
  • 用户登录/注册
  • Mysite.com重定向到查询字符串中带有代码或错误的特殊url
  • Webview(通过shouldStartLoadWithRequest函数)识别特殊url并关闭自身
然后,它将代码传递给父控制器的委托函数

[self.delegate processOauth2.0Code: code]
如果出现错误(可能是用户拒绝了oauth2.0),它将创建NSError对象并将NSError对象发送到单独的委托函数)

  • 然后,父控制器函数将代码发送到web服务器
  • Web服务器使用代码及其应用程序密钥对我的站点进行api调用,以检索访问令牌
这就是在移动应用程序中设计Oauth2.0流的方式吗

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


对于代码和错误,有两个委托函数是正常的吗?

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

流行的OAuth提供商:

  • 许多人使用AFNetworking及其OAUth注释

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

使用GTMOAuth2:

  • 设置起来可能有点复杂。比SO答案更适合的代码多一点。基本上,您可以将GTMOAuth2ViewControllerTouch添加到窗口中,并使用它来收集凭据
  • 测试它的最佳方法是运行示例,然后修改它们以与您自己的后端对话。一旦你运行了,将代码移植到你的应用程序中
我建议您使用OAuth库,而不是尝试自己实现它

[self.delegate processOAuth2.0Error: error]