BBASMAccountAdapterProtocol.h
5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//
// BBASMAccountAdapterProtocol.h
// SWAN
//
// Created by baidu on 2018/9/9.
// Copyright © 2018年 baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"
#import <WebKit/WebKit.h>
NS_ASSUME_NONNULL_BEGIN
/*
* 账号协议,该协议只在内部调用
*/
@protocol BBASMAccountAdapterProtocol <NSObject>
@optional
#pragma mark - 如果宿主需要用自己的账号体系登录,需要实现以下协议方法
/**
* @brief 风控zid,用于安全防御;
* 百度系产品线,必须实现这个接口;联盟成员如果使用自己的账号体系,可以实现;
* @return 风控zid,在模拟器下为空字符串;
*/
+ (nullable NSString *)userZid;
/**
* @brief 调用登录接口 (百度系产品必须实现,外部宿主可选)
* 如果实现此接口,须同时实现 logout, getUserInfo 和 accountChangeNotificationName接口
* @param loginCompletionBlock 不能设置为nil 登录成功、失败(退出登录页面)的回调,参数YES:登录成功,NO:登录失败或者未登录直接退出登录页面;必须要调用,不然会导致再次登录无法调起
*/
+ (void)login:(void (^)(BOOL success))loginCompletionBlock;
/**
* @brief private: 百度系产品可用,退出登录接口(主要用于登录失效时退出登录)
*/
+ (void)logout;
/**
* @brief 是否是游客登录
*/
+ (BOOL)isGuest;
/**
* @brief 获取用户信息,登录成功之后(百度系App在调用passport登录成功之后,需要主动发起获取用户信息的请求)
* @return 用户信息
* @{
* @"userName":[NSString], // 用户名,可以为nil,登录情况下一定不能为nil
* @"nickName":[NSString], // 昵称,可以为nil,登录情况下一定不能为nil
* @"portrait":[NSString], // 用户图像,可以为nil
* @"gender":[NSNumber numberWithInteger:gender], // 用户性别 -1:未知 0:女 1:男
* @"userID":[NSString], // 用户ID,可以为nil,登录情况下一定不能为nil
* @"isLogin":[NSNumber numberWithBool:isLogin] 用户的登录状态,YES:登录成功,NO:登录失败
* };
*/
+ (nullable NSDictionary *)getUserInfo;
/**
* @brief 设置帐号变化的通知名,账户登录成功或退出登录需要发送此通知
* @return 宿主账号变化的通知名,必须要设置
*/
+ (NSString *)accountChangeNotificationName;
/**
* @brief 帐号变化通知userInfo中标识切换账号的key值
* @return userInfo的key值
*/
+ (NSString *)accountChangeNotificationSwitchKey;
/**
* @brief private:百度系产品;用于WKWebView在处理网页登出时,有可能cookie不同步的问题,调用此api进行bduss校验,若失效,则logout
*/
+ (void)checkWbviewAccountInvalid;
/**
* @brief private:百度系产品;增加 WKWebView H5登录态同步到 NA 处理。H5登录成功后,将根据策略同步H5与NA的登录态
* @param controller WKUserContentController
*/
+ (void)webviewLoginInfoSync:(WKUserContentController *)controller;
/**
* @brief private:百度系产品;可用登录状态如果用户没有手机号,强制绑定手机号,
* @param completion 完成回调,success:是否绑定了手机号,finishBindAction:用户是否调起了绑定手机号界面,并且绑定手机号成功。
* @description 如果宿主实现了这个方法,那么走宿主的方法,没有默认绑定了手机号
*/
+ (void)forceBindPhone:(void(^)(BOOL success, BOOL finishBindAction))completion;
/**
* @brief 调起绑定手机号的页面
*/
+ (void)bindPhoneNum:(void (^)(BOOL success))completionBlock;
/**
* @brief private:百度系产品;没有实名信息时引导进行实名和人脸校验
*
* @param appID 小程序appID
*/
+ (void)faceVerifyNoRealName:(NSString *)appID
verifyCallback:(void(^)(NSString *key, BOOL haveJunior, BOOL haveSenior))callback __attribute__((deprecated("Use faceVerifyNoRealName:extraParams:verifyCallback: instead.")));
/// 账号实名认证(private:百度系产品)
/// @param appID appID
/// @param extraParams 额外参数,在pass调起实名认证的h5时会将字典中的内容拼入query,如果传nil则是默认的高级实名认证,传realname_level: @(YES)则是默认的初级实名认证,请视业务需要传入
/// @param callback key - 完成高级实名后的刷脸凭证 haveJunior - 是否完成了初级实名 haveSenior - 是否完成了高级实名
+ (void)faceVerifyNoRealName:(NSString *_Nonnull)appID
extraParams:(NSDictionary *_Nullable)extraParams
verifyCallback:(void(^_Nonnull)(NSString * _Nullable key, BOOL haveJunior, BOOL haveSenior))callback;
/// private:百度系产品;通过调起半屏登录页面登录后获取用户手机号权限
/// @param appId 小程序id
/// @param appName 小程序名称
/// @param resultHandler 是否授权成功的回调
+ (void)getTelAuthorizeByLoginWithAppId:(NSString *)appId
appName:(NSString *)appName
resultHandler:(void(^)(BOOL isAuthorizeSuccess))resultHandler;
/// 可选实现,由开源宿主设置用户的唯一标识(限定256个字符)。如果一个用户有多个账号,则所有账号都绑定一个hostUniqueID。目前用于聚合收银台绑定用户订单信息
+ (NSString *)hostUniqueID;
@end
NS_ASSUME_NONNULL_END