ApolloZhu / ApolloZhu.github.io

Blog

Home Page:https://ApolloZhu.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

raywenderlich OAuth 学习笔记

ApolloZhu opened this issue · comments

目的

  • 通过 token,而不是用户名和密码实现用户身份验证
  • 可以限制能够访问得到的数据的范围来提升安全性

方法

  • 流程:用户登录第三方网站,输入用户名密码,第三方返回 token
  • 实现:使用 OAuth Swift 框架(做了很好的抽象

例子:Strava

从第三方注册 app,获取信息

image

使用 OAuth Swift:

image

配置 Deep Link 回 App:

image

打开 App 时完成验证,关闭 web view

image

把 access token 传入请求的 authorization header 里:

image

扩展阅读

  • User defaults 不是存储 token 的好地方,应该使用 keychain,没有找视频教程,可以看文章
  • OAuth 服务端的实现参考 https://docs.vapor.codes/3.0/auth/api/
    • 不要存储明文密码到数据库
    • Ray 其他的 vapor 视频里提到了 Turnstile,有兴趣可以仔细研究什么情况
  • bilibili 现在使用的是 session 式的用户认证(随 cookie 发送用户当前 session 信息)

参考资料

OAuth2: https://www.raywenderlich.com/5034-accessing-data-using-oauth