get-univerify-manager.md 13.2 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4
## uni.getUniverifyManager() @getuniverifymanager

<!-- UTSAPIJSON.getUniverifyManager.description -->

D
DCloud_LXH 已提交
5 6
<!-- UTSAPIJSON.getUniverifyManager.compatibility -->

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
7
App一键登录,封装了个推的一键登录sdk,其内部再次封装了中国三大电信运营商提供的sdk。通过运营商提供的服务,可以在手机sim卡信号正常的情况下,通过云端接口获取到当前用户的手机号。
D
DCloud_LXH 已提交
8

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
9
使用一键登录可以点一下直接以当前手机号登录。不再需要短信验证码,而且费用比短信验证码便宜。
D
DCloud_LXH 已提交
10

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
11
App一键登录的优势:
W
wanganxp 已提交
12 13 14 15
1. 对比短信验证码登录
- 对开发者而言每条短信费用更贵、短信模板审核慢、短信发送成功可能几十秒;
- 对用户而言,输入手机号耗时、等待耗时、输入验证码耗时,等待体验差。
2. 对比微信登录
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
16 17
- 中国法律要求开发者了解客户的真实信息。与其微信登录后再次要求用户输入短信验证码,不如直接一键登录。
- 在iOS上,一旦使用微信登录,就必须同时加入Apple登录。Apple登录的用户无法再次有效触达,只能再次要求用户输入短信验证码绑定手机号,体验非常差。不如直接一键登录。使用一键登录时Appstore不会要求必须同时使用Apple登录。
W
wanganxp 已提交
18

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
19
一键登录涉及业务开通和付费,因为安全问题又涉及客户端和服务器交互,有较多文档:
D
DCloud_LXH 已提交
20 21
1. 业务介绍:介绍业务流程、开通和付费。[详见](https://uniapp.dcloud.net.cn/univerify.html)
2. 客户端API,即本文
W
wanganxp 已提交
22
3. 服务器API,[详见](https://doc.dcloud.net.cn/uniCloud/uni-login/dev.html)
D
DCloud_LXH 已提交
23

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
24
uni-id-pages插件,已经内置一键登录,从云端到客户端均已开发好并开源,推荐使用。[详情](https://doc.dcloud.net.cn/uniCloud/uni-id/app-x.html)
W
x  
wanganxp 已提交
25

D
DCloud_LXH 已提交
26 27
<!-- UTSAPIJSON.getUniverifyManager.param -->

W
wanganxp 已提交
28 29 30 31
### 类型调整注意@typechange
:::warning
从HBuilderX 4.41+,UniverifyManager的方法的`参数类型`进行了调整。

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
32
比如之前类型叫`LoginOptions`,改名为了`UniVerifyManagerLoginOptions`,加上了`UniVerifyManager`前缀。
W
wanganxp 已提交
33 34 35 36

本调整是因为未来会增加更多登录方式,一键登陆的参数类型占用通用的名称`LoginOptions`不合适。

涉及名单如下:
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
37 38 39 40 41 42 43 44 45 46 47
- PreLoginOptions 变更为 UniVerifyManagerPreLoginOptions
- LoginOptions 变更为 UniVerifyManagerLoginOptions
- CustomLoginOptions 变更为 UniVerifyManagerCustomLoginOptions
- PreLoginSuccess 变更为 UniVerifyManagerPreLoginSuccess
- PreLoginFail 变更为 UniVerifyManagerPreLoginFail
- PreLoginComplete 变更为 UniVerifyManagerPreLoginComplete
- LoginSuccess 变更为 UniVerifyManagerLoginSuccess
- LoginFail 变更为 UniVerifyManagerLoginFail
- LoginComplete 变更为 UniVerifyManagerLoginComplete

注意在4.41以前的版本,仍需使用无前缀的老类型名称。
W
wanganxp 已提交
48 49 50 51 52

一般情况下,开发者无需手动 as 返回值类型,uni-app x 会自动推导类型。早期的示例代码有 as ,新版示例已经去掉。

:::

D
DCloud_LXH 已提交
53 54 55 56
<!-- UTSAPIJSON.getUniverifyManager.returnValue -->

<!-- UTSAPIJSON.getUniverifyManager.tutorial -->

W
x  
wanganxp 已提交
57
## cause个推sdk错误码及运营商错误码汇总
D
DCloud_LXH 已提交
58

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
59
上述API不管是预登录还是登录,失败时返回的uni Error错误对象,有一个属性cause,它表示底层的错误来源,这里包含了个推的个验sdk和运营商sdk的详细信息。比如没有sim卡或未开启蜂窝网络。
W
x  
wanganxp 已提交
60

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
61
在大多数情况下,开发者需要把这些更为详细的错误提示给用户,以引导用户正确使用一键登录。
D
DCloud_LXH 已提交
62

D
DCloud_LXH 已提交
63 64 65
### 个推sdk错误码 @getui-error-code

| 错误码 | 错误信息 |
66 67 68 69 70 71 72
|---|---|
| -10000 | sdk没有初始化,请先初始化sdk |
| -10001 | sdk初始化失败,详见整体msg内容 |
| -10003 | 接口请求超时,请稍后重试、加大超时时间或者检查网络 |
| -10006 | 上一个请求正在进行中,请稍后重试 |
| -10009 | 其他错误,详见整体msg内容,比如metadata字段等会有更详细的内容 |
| -20100 | 传入参数错误 |
D
DCloud_LXH 已提交
73
| -20101 | appid为空,请检查 build.gradle 字段 GETUI_APPID |
74 75 76 77 78 79 80 81 82 83 84
| -20102 | appid无效或者签名无效 |
| -20104 | 预登录无效,请先进行预登录 |
| -20200 | 无网络可用,请检查手机网络、或者稍后重试 |
| -20201 | 未插手机电话卡 |
| -20202 | 未开启蜂窝网络 |
| -20203 | 不支持的运营商,请检查手机是否成功连接运营商、以及sdk支持该运营商 |
| -20301 | 登录授权页退出 |
| -20500 | 获取运营商APPID失败,请重启应用重试、或者联系技术支持 |
| -30001 | 服务器返回的其他错误,详见整体msg内容 |
| -40001 | 运营商返回的其他错误,详见整体msg内容,比如metadata字段等会有更详细的内容 |

D
DCloud_LXH 已提交
85 86 87
### 移动错误码 @cm-error-code

| 错误码 | 错误信息 |
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 127 128 129 130 131 132 133 134 135 136 137 138 139
|---|---|
| 102101 | 无网络 |
| 102102 | 网络异常 |
| 102103 | 未开启数据网络 |
| 102203 | 输入参数错误 |
| 102223 | 数据解析异常,一般是卡欠费 |
| 102507 | 登录超时(授权页点登录按钮时) |
| 103101 | 请求签名错误(若发生在客户端,可能是 appkey 传错,可检查是否跟 appsecret 弄混,或者有空格。若发生在服务端接口,需要检查验签方式是 MD5 还是 RSA,如果是 MD5,则排查 signType 字段,若为 appsecret,需确认是否误用了 appkey 生签。如果是 RSA,需要检查使用的私钥跟报备的公钥是否对应和报文拼接是否符合文档要求。) |
| 103102 | 包签名错误(社区填写的 appid 和对应的包名包签名必须一致) |
| 103111 | 网关 IP 错误(检查是否开了 vpn 或者境外 ip) |
| 103119 | appid 不存在(检查传的 appid 是否正确或是否有空格) |
| 103211 | 其他错误,(常见于报文格式不对,先请检查是否符合这三个要求:a、json 形式的报文交互必须是标准的 json 格式;b、发送时请设置content type 为 application/json;c、参数类型都是 String。如有需要请联系 qq 群 609994083 内的移动认证开发) |
| 103412 | 无效的请求(1.加密方式错误;2.非 json 格式;3.空请求等) |
| 103414 | 参数校验异常 |
| 103511 | 服务器 ip 白名单校验失败 |
| 103811 | token 为空 |
| 103902 | scrip 失效(客户端高频调用请求 token 接口) |
| 103911 | token 请求过于频繁,10 分钟内获取 token 且未使用的数量不超过30 个 |
| 104201 | token 已失效或不存在(重复校验或失效) |
| 105001 | 联通取号失败 |
| 105002 | 移动取号失败(一般是物联网卡) |
| 105003 | 电信取号失败 |
| 105012 | 不支持电信取号 |
| 105013 | 不支持联通取号 |
| 105018 | token 权限不足(使用了本机号码校验的 token 获取号码) |
| 105019 | 应用未授权(未在开发者社区勾选能力) |
| 105021 | 当天已达取号限额 |
| 105302 | appid 不在白名单 |
| 105312 | 余量不足(体验版到期或套餐用完) |
| 105313 | 非法请求 |
| 200002 | 用户未安装 sim 卡 |
| 200010 | 无法识别 sim 卡或没有 sim 卡 |
| 200023 | 请求超时 |
| 200005 | 用户未授权(READ_PHONE_STATE) |
| 200020 | 授权页关闭 |
| 200021 | 数据解析异常(一般是卡欠费) |
| 200022 | 无网络 |
| 200023 | 请求超时 |
| 200024 | 数据网络切换失败 |
| 200025 | 其他错误(socket、系统未授权数据蜂窝权限等,如需要协助,请加入 qq 群发问) |
| 200026 | 输入参数错误 |
| 200027 | 未开启数据网络或网络不稳定 |
| 200028 | 网络异常 |
| 200038 | 异网取号网络请求失败 |
| 200039 | 异网取号网关取号失败 |
| 200040 | UI 资源加载异常 |
| 200050 | EOF 异常 |
| 200072 | CA 根证书校验失败 |
| 200080 | 本机号码校验仅支持移动手机号 |
| 200082 | 服务器繁忙 |
| 200087 | 授权页成功调起 |

D
DCloud_LXH 已提交
140 141 142
### 联通错误码 @cu-error-code

| 错误码 | 错误信息 |
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
|---|---|
| 100 | 应用未授权 |
| 101 | 应用秘钥错误 |
| 102 | 应用无效 |
| 103 | 应用未授权该 IP 访问 |
| 104 | 应用访问次数不足 |
| 105 | 应用包名不正确 |
| 106 | 应用状态非法 |
| 107 | 商户状态非法 |
| 108 | 商户请求次数超限额 |
| 200 | tokenId 无效 |
| 201 | token 已失效 |
| 202 | token 未授权该应用访问 |
| 203 | 登录鉴权级别不满足接口鉴权要求 |
| 300 | 接口未开放 |
| 301 | 应用未授权码访问该接口 |
| 302 | IP 未授权码访问该接口 |
| 303 | 应用访问接口次数超日限额 |
| 400 | 请求参数为空 |
| 401 | 请求参数不完整 |
| 402 | 请求参数非法 |
| 600 | 请求非法 |
| 1000 | 请求解析错误 |
| 1001 | 请求已失效 |
| 1002 | 验签失败 |
| 1003 | 授权码已过期 |
| 1004 | 加密方式不支持 |
| 1005 | RSA 加密错误 |
| 1010 | 服务间访问失败 |
| 1011 | 服务间访问错误 |
| 3010 | 网关取号错误 |
| 3012 | 网关取号失败 |
| 3013 | 电信网关取号失败 |
| 3014 | 电信网关取号错误 |
| 3016 | 移动网关取号失败 |
| 3017 | 移动网关取号错误 |
| 3050 | 取号网关内部错误 |
| 3057 | 网关鉴权码查找号码失败 |
| 3058 | 网关鉴权码格式错误 |
| 3059 | 网关鉴权码已失效 |
| 3060 | 网关账号认证失败 |
| 3061 | 网关取号配额不足 |
| 3062 | IP 未授权访问网关 |
| 3063 | 网关并发连接数受限 |
| 3064 | 访问网关参数非法 |
| 3065 | 未授权访问该网关能力 |
| 3066 | 网关服务暂时不可用 |

D
DCloud_LXH 已提交
191 192 193
### 电信错误码 @ct-error-code

| 错误码 | 错误信息 |
194 195 196 197 198 199 200 201 202 203 204 205
|---|---|
| -64 | permission-denied(无权限访问) |
| -65 | API-request-rates-Exceed-Limitations(调用接口超限) |
| -10001 | 取号失败 |
| -10002 | 参数错误 |
| -10003 | 解密失败 |
| -10004 | ip受限 |
| -10005 | 异网取号回调参数异常 |
| -10006 | Mdn取号失败,且属于电信网络 |
| -10007 | 重定向到异网取号 |
| -10008 | 超过预设取号阈值 |
| -10009 | 时间戳过期 |
D
DCloud_LXH 已提交
206
| -20005 | sign-invalid(签名错误) |
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
| -20006 | 应用不存在 |
| -20007 | 公钥数据不存在 |
| -20100 | 内部解析错误 |
| -20102 | 加密参数解析失败 |
| -30001 | 时间戳非法 |
| -30003 | topClass失效,请查看5.3+5.4常见问题。 |
| 51002 | 参数为空 |
| 51114 | 无法获取手机号数据 |
| 80000 | 请求超时 |
| 80001 | 请求网络异常 |
| 80002 | 响应码错误 |
| 80003 | 无网络连接 |
| 80004 | 移动网络未开启 |
| 80005 | Socket超时异常 |
| 80006 | 域名解析异常 |
| 80007 | IO异常 |
| 80008 | No route to host |
| 80009 | nodename nor servname provided, or not known |
| 80010 | Socket closed by remote peer |
| 80100 | 登录结果为空 |
| 80101 | 登录结果异常 |
| 80102 | 预登录异常 |
| 80103 | SDK未初始化 |
| 80104 | 未调用预登录接口 |
| 80105 | 加载nib文件异常 |
| 80200 | 用户关闭界面 |
| 80201 | 其他登录方式 |
| 80800 | WIFI切换异常 |
| 80801 | WIFI切换超时 |

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
237 238 239
## 关于login(标准登录)与customLogin(自定义页面登录)
- 标准登录:预登录成功后,调用`login`方法拉起授权页面,登录成功后通过`close`方法关闭页面。此方式的优点是方便快捷无需开发界面UI,缺点是无法定制授权页面。
- 自定义页面登录(4.41+支持):根据预登录成功后返回的内容(包括脱敏手机号、运营商slogan、运营商隐私协议名称、运营商隐私协议地址),开发者自行实现符合[规范要求](#custom-specification-requirement)的授权页面,在页面的登录按钮点击事件内调用`customLogin`传入五要素完成登录。登录成功后通过`uni.navigateBack()``uni.closeDialogPage()`等方式关闭授权页。
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
240

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
241 242
## 自定义页面规范要求 @custom-specification-requirement
- 页面必要元素有:号码栏(NumberText),品牌露出(SloganText),登录按钮(LoginButton),隐私确认(PrivacyCheckbox),隐私标题(PrivacyText),其中号码栏、品牌露出、隐私标题必须使用[text组件](https://doc.dcloud.net.cn/uni-app-x/component/text.html)实现,登录按钮必须使用[button组件](https://doc.dcloud.net.cn/uni-app-x/component/button.html)实现,隐私确认必须使用[checkbox组件](https://doc.dcloud.net.cn/uni-app-x/component/checkbox.html)实现。
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
243 244 245
- 开发者不得通过任何技术手段将上述授权页面的必要元素内容隐藏、覆盖、或者动态变更。
- 登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权。
- 对于接入一键登录并上线的应用,运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
246 247 248

## Tips
- 不得默认勾选同意、需要用户手动点击按钮获取手机号不能自动获取手机号。
DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
249 250
- 一键登录并非100%成功,手机没有sim卡、蜂窝网络未开启、当时手机没有蜂窝网信号是最常见的原因,更多错误见上方的错误码列表。在一键登录无法使用时,可转为短信验证码登录。在uni-id-pages里已经集成了相关逻辑,无需自己开发。[详情](https://doc.dcloud.net.cn/uniCloud/uni-id/app-x.html)
- 一键登录支持标准基座真机运行,涉及费用扣除开发者的费用。无需自定义基座。
W
x  
wanganxp 已提交
251 252 253

<!-- UTSAPIJSON.getUniverifyManager.example -->

D
DCloud_LXH 已提交
254 255
<!-- UTSAPIJSON.general_type.name -->

D
DCloud_LXH 已提交
256
<!-- UTSAPIJSON.general_type.param -->