我有一个允许用户拥有帐户的网站。第三方开发人员可以使用 oauth2.0 流程来访问我网站上的用户帐户。
我正在构建一个 iOS sdk,允许第三方开发人员实施 oauth2.0 流程以访问我的用户帐户。
我在设想以下内容:
- 用户单击 iPhone 应用程序中的按钮。
- 查看他们访问 mysite.com/oauth2 的 web 视图(我的网站带有 oauth2.0 流程页面)
- 登录/注册,然后单击授予访问权限(授予开发人员访问他们在我网站上的帐户的权限)。
- Web 视图重定向到带有代码的 url
- 不知何故,系统使用该代码对我的站点进行 api 调用以获取该用户的访问令牌,以便开发人员随后可以访问该用户的帐户。问题是开发人员需要使用他们的应用程序密钥进行此 API 调用,并且出于安全目的,我不希望开发人员将应用程序密钥存储在应用程序中。
最后一步有两种可能:
- Webview 重定向到开发者的服务器。Developer Server 获取代码,对我的服务器进行 api 调用以获取访问令牌,以便用户能够为他们创建帐户等,然后重定向回一个 url ("app://access_token:....) webview 识别为关闭自身的信号。然后 iPhone 应用程序从该 url 检索访问令牌。
或者
- 让用户单击授予访问权限后,Webview 重定向到随机 URL。代码在网址中。Webview 然后识别出 url 中有一个代码。在父视图控制器中调用委托函数并将代码传递给该函数后关闭自身。然后,父视图控制器函数将该代码发送到开发人员服务器,该服务器对我的服务器(使用代码)进行 api 调用以获取访问令牌。
完成上述任务的最佳方法是什么?