[OAuth2.0三方登录系列文章-2]如何设计基于OAuth2.0的授权登录SDK以及竞品分析
系列文章
[OAuth2.0三方登录系列文章-1]OAuth2.0与三方登录的端到端方案
[OAuth2.0三方登录系列文章-2]如何设计基于OAuth2.0的授权登录SDK以及竞品分析
[OAuth2.0三方登录系列文章-3]如何设计一个与微信相同的分享sdk
名词解释
授权登录: 指的是 三方应用提供给其他app, 用作快捷登录的方式, 如facebook 授权登录, 微信授权登录, 微博授权登录.
三方登录: 指的是 接入授权登录的app, 如AE 接入了facebook, google的三方登录.
微信 授权登录
官方说明
支持登录的方式
仅支持app 安装的方式
SDK 设计的细节
官方序列图
架构图
泳道图
优缺点总结
- 通用性: SDK 设计的比较通用, 不仅可以满足授权登录的请求, 还可以处理其他的请求
- 对接成本:
- 易用性:
- 对于有后端和无后端的应用均可以低成本的对接都是比较低的;
- 客户端的逻辑对接: 成本略有些高, 需要将wx的返回的数据, 重新的再次包装,才能给到对应的页面
微博 授权登录
官方说明
SDK 设计的细节
支持登录的方式
- app 已经安装的场景, 打开app授权(称之为SSO登录)
- app 已经安装, 强制打开 webview授权
- app 未安装时, webview的方式
SDK 架构图
版本: 10.10.0
门面模式:
WBAPIFactory
IWBAPI
数据发送
必须持有activity, 对接起来, 尤其是对于一些与activity, 使用起来会增加难度.
当前的activity, 会被回调onActivityResult
主动调用authorizeCallBack, 会解析结果, 给到最初注册的api的callback的回调.
泳道图
与微信一样
优缺点总结
- 通用性: SDK 设计的相对比较通用, 但是授权登录与分享消息的设计是隔离的, 即SDK设计的没有那么通用
- 对接成本
- 易用性:
- 微博直接给到的是token(而非code), 采用的是方式2: 隐式对接的
- 客户端的逻辑对接: 成本比较低, token直接能够获取到, 并且提供了token的再次刷新等封装的接口
Facebook 授权登录
官方说明
SDK 设计的细节
支持登录的方式
- app 已经安装的场景, 打开app授权(称之为SSO登录)
- app 已经安装, 强制打开 webview授权
- app 未安装时, webview的方式
- 还有其他的一些不常见方式
SDK 架构图
版本: 6.5.1
泳道图
与微信类似
优缺点总结
优点:
- 通用性: SDK 设计的层次清晰, 授权登录与分享消息的设计是隔离的
- 对接成本
- 易用性:
- facebook直接给到的是token(而非code), 采用的是方式2: 隐式对接的
- 客户端的逻辑对接: 成本比较低, token直接能够获取到, 并且提供了token的再次刷新等封装的接口
授权登录总结
授权登录SDK会如何设计
假设我们负责的App是NB App, 要对外提供授权登录的SDK.
SDK 端到端方案
给到端侧的是code, 非token.
SDK 功能设计
- app 已经安装的场景, 打开app授权(称之为SSO登录)(优先级最高)
- app 已经安装, 强制打开 webview授权
- app 未安装时, webview的方式
SDK 架构设计
结合微信的业务层的方式, 以及Facebook的实现层的方式, 最终架构如下