账号
1 公共账号协议
1.1 协议名
BBASMAccountAdapterProtocol
1.2 功能说明
目前账号登录分:
- 联盟账号:SDK 内部建立联盟账号,打通授权、收货地址、账号登录信息等服务(推荐方式);
- 自有账号:需要通过自有账号建立一套自己的授权体系、收货地址等服务(实现成本高)。
[注] 百度产品线的宿主采用自有账号方式,建议升级 passport 版本到:8.9.2.0.1 以上版本。
1.3 接口列表
1.3.1 联盟账号方式
2.34 版本后小程序框架会根据宿主是否集成了 SSDKLightLib 库来判断宿主是否使用的是联盟账号
2.34 版本前需要宿主实现 isUseUnionAccountLogin 接口
1 | /// @brief 是否使用百度开源联盟登录 (百度系产品不需要实现此接口,外部宿主可选) |
调用API:
退出联盟账号登录:
1
2// 在调用的类中,#import "BBASMServiceProtocol.h" 。
[Pyramid.bba_MNP unionAccountLogOut];获取联盟账号的登录标识:
1
[Pyramid.bba_MNP getUnionBduss];
1.3.2 自有账号方式
- 登录接口
需要注意两点:
- 若宿主的登录页面是一个 View 视图会影响小程序页面周期,在登录前,需调用 [Pyramid.bba_smManager dispatchPageAndAppOnHiddenEvent] ,在登录完成后,调用 [Pyramid.bba_smManager dispatchAppAndPageOnShowEvent] ;
- 若宿主的登录页面是一个 ViewController ,页面消失,需要 loginCompletionBlock(里面 BOOL 值由登录成功决定);侧滑退出登录页面完成后要调用 loginCompletionBlock(NO) ,或者禁止当前登录页面侧滑手势。
1 | /// @brief 调用登录接口,如果实现此接口,须同时实现 logout, getUserInfo 和 accountChangeNotificationName接口 |
- 退出登录
1 | /// @brief private: 百度系产品可用,退出登录接口(主要用于登录失效时退出登录) |
- 用户信息
1 | /// @brief 获取用户信息,登录成功之后(百度系App在调用passport登录成功之后,需要主动发起获取用户信息的请求) |
- 宿主账号变化的通知
1 | /// @brief 设置账号变化的通知名,账户登录成功或退出登录需要发送此通知 |
- 检查网页登录是否合法
1 | /// @brief private:百度系产品可用;用于WKWebView在处理网页登出时,有可能cookie不同步的问题,调用此api进行bduss校验,若失效,则logout |
- 安全防御,百度内部宿主需要实现
1 | /// @brief private, 风控zid,用于安全防御; |
- 半屏登录、一键登录功能
1 | /// private:百度系产品可用;通过调起半屏登录页面登录后获取用户手机号权限 |
通过手机号半屏登录 (参考 BBASMAccountImplement 中实现 getTelAuthorizeByLoginWithAppId 接口)
一键登录(可选):接入中国移动、中国电信等运营商 SDK 自动获取手机号能力,一键登录参考文档。
一键登录集成步骤:
- 向 Passport 提交物料进行授权申请,获取各个运营商授权 key ;
- 集成运营商 SDK ;(移动 TYRZSDK.framework 、电信 EAccountApiSDK.framework 、联通 OAuth.framework )
- 项目中初始化运营商授权 key ,参考 Demo 中的 BBASMAccountHelper 类;
- BBASMAccountImplement 中实现 getTelAuthorizeByLoginWithAppId 接口,详情请参考参考 Demo 。
[注] 如果不集成运营商 SDK ,则会退化成手机号半屏登录,一键登录有任何问题可以参考文档。
强制绑定手机号
1
2
3
4/// private:百度系产品可用;可用登录状态如果用户没有手机号,强制绑定手机号
/// @param completion 完成回调,success:是否绑定了手机号,finishBindAction:用户是否调起了绑定手机号界面,并且绑定手机号成功。
/// @description 如果宿主实现了这个方法,那么走宿主的方法,没有默认绑定了手机号
+ (void)forceBindPhone:(void(^)(BOOL success, BOOL finishBindAction))completion;
1.4 示例
参考:BBASMAccountImplement
2 百度系宿主私有账号协议
2.1 协议名
BBASMBDAccountAdapterProtocol
2.2 功能说明
从 SDK 2.27.0版本开始,新增这个私有账号协议,这个协议只在百度系宿主上使用,具体功能:
- 获取bduss (必须要实现)
- 获取openbduss
- 获取stoken(必须要实现)
- 调用三方登录
- 一键登录(是否支持一键登录)
- 设置百度登录头像
- 人脸校验
2.3 接口列表
2.3.1 获取bduss(必须要实现)
前端在调用swan.baidu.getBDUSS端能力,需要实现这个接口:
1 | /// 获取bduss |
2.3.2 获取openbduss
前端在调用swan.baidu.getOpenBDUSS端能力,如果运行度小满钱包小程序需要使用到这个端能力,实现接口如下:
1 | /// @brief 获取openbduss |
2.3.3 获取stoken(必须要实现)
前端在调用swan.baidu.getStoken端能力,需要实现这个接口:
1 | /// @brief 获取stoken |
2.3.4 调用三方登录
前端在调用swan.baidu.thirdPartyLogin端能力,先判断三方登录的app是否已经安装,需要实现这个接口:
1 | /// @brief 第三方登录,本地是否安装相关App |
前端在调用swan.baidu.thirdPartyLogin端能力,调用三方登录的app,需要实现这个接口:
1 | /// @brief 调用第三方登录 |
2.3.5 一键登录
前端在调用swan.baidu.quickLogin端能力,一键登录需要实现这个接口:
1 | /// 一键登录 |
前端在调用swan.baidu.queryQuickLoginInfo端能力,是否支持一键登录需要实现这个接口:
1 | /// 查询是否支持一键登录 |
2.3.6 设置百度登录头像
前端在调用swan.baidu.setAccountAvatar端能力,需要实现这个接口:
1 | /// @brief 设置百度登录头像 |
2.3.7 人脸校验
前端在调用swan.baidu.commonFaceVerify端能力,人脸校验需要实现这个接口:
1 | /// 姓名、身份证、人脸校验接口 |
2.4 示例 (私有协议)
参考:BBASMBDAccountImplement