原文链接:Implementing OAuth with ASWebAuthenticationSession | Kodeco
iOS 用 ASWebAuthenticationSession 实现 OAuth 登录
创建 GitHub App
如果希望 APP 和 GitHub 进行会话,GitHub 需要知道用户要在哪里试图用 APP 访问它的资源 并且需要知道应该授权哪些资源可访问。
是时候在你的账户里创建 GitHub APP 了。下面就是如何开始! 在 Web 浏览器中,打开并登录 GitHub 。在右上角点击你的 头像。然后,点击 Settings :
点击 Developer settings :
点击 GitHub Apps 。点击 New GitHub App 按钮:
创建新的 APP 时,有一些选项和设定。现在要配置这些。
命名 APP 为 AuthHub- 。根据需要为 APP 添加 description (描述)。
为你的 APP 添加 homepage URL 。该示例使用 www.raywenderlich.com/ 。 如果是创建你个人的 APP ,应该链接到你的 APP 的主页,用户在这里可以看到更多的信息。
用户授权设定
settings center 的下一个设定是关于用户授权的。 第一个选项是授权的回调 URL。 这是授权提供方在成功授权后要重定向的页面。 APP 中会监听在这里指定的格式,一旦用户获得授权,就会拿回控制权。
使用下面的内容作为 APP 的回调 URL:
authhub://oauth-callback
这只是自定义的回调。
可以根据需要使用不同的值,但要注意使用 ASWebAuthenticationSession 时会改变设置过程。
现在,使用上面的值很方便,可以继续了。
接下来的选项是一个单选框,询问用户的授权 Token 是否可过期。 选中该单选框,因为你希望在选择即将过期的 AccessToken 时获取刷新 Token ,以实现更好的安全模型。 最后,会有个在安装请求时用户授权的选项,可以保持不选中,因为对于你的 APP 来说不需要。
安装完成选项
页面再往下,是安装完成选项和 Web 钩子,可以保持空白。
确认 Webhook 下面的 Active 单选框没有选中!
权限设定
接下来的部分和权限有关。在这里可以指定 APP 能够访问哪些信息。
在 Contents (内容)设定中,将访问选项设为 Read-only (只读)。
最后有一个设置用于指定 APP 安装的地方。例如,选择 Only on this account (仅该用户)。
恭喜!你已经配置好了你的 APP 。现在,点击 Create GitHub App ,然后就能看到你的 APP 的详情页面了。
查看结果
你已经在 GitHub 中用它的 APP ID 和 客户端 ID 创建了 APP 。现在你可以设置客户端了 - 在本篇中,客户端是指 AuthHub iOS APP - 连接并使用你的 GitHub 的 APP 。如果你用三个不同的 APP - 可能是 iOS 、Android 和 Web - 来连接你的 GitHub APP ,你会想生成三个不同的客户端密钥。
如果你在页面顶部在看到了一个黄色条提示你必须生成一个私钥,那就点击链接去生成一下。
接下来,点击 Generate a new client secret 按钮。复制表示的字母数字值并粘贴到可永久保存的地方,因为 GitHub 不会让你再次看到该信息。
要谨慎使用你的客户端密钥,确保不会向其它人分享。
需要在 GitHub 上做的所有工作都已经完成了。 是时候编写 Swift 代码了!