Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yangkaifeng
uni-app
提交
a4dd5f5f
U
uni-app
项目概览
yangkaifeng
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
a4dd5f5f
编写于
12月 14, 2020
作者:
DCloud-yyl
提交者:
GitHub
12月 14, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update univerify.md
整理文档描述信息
上级
6a204175
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
81 addition
and
57 deletion
+81
-57
docs/univerify.md
docs/univerify.md
+81
-57
未找到文件。
docs/univerify.md
浏览文件 @
a4dd5f5f
> HBuilderX 2.9.12+ 版本新增支持 `一键登录`
> HBuilderX 2.9.12+ 版本新增支持 `一键登录`
功能
## 概述
...
...
@@ -17,7 +17,7 @@
在用户同意授权的操作前提下,访问运营商网关鉴权,获取当前设备access_token等信息。
通过uniCloud 将access_token信息 置换为当前设备的真实手机号码
![](
https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/client/doc/univerify/process.
pn
g
)
![](
https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/client/doc/univerify/process.
jp
g
)
前置条件:
+
手机安装有sim卡
...
...
@@ -37,31 +37,31 @@
### 开通服务
开发者需要登录
[
DCloud开发者中心
](
https://dev.dcloud.net.cn/
)
,申请开通一键登录服务。
具体文档:
[
开通一键登录
的详细教程
](
https://ask.dcloud.net.cn/article/37965
)
详细步骤参考:
[
开通一键登录服务
的详细教程
](
https://ask.dcloud.net.cn/article/37965
)
### 集成模块
-
**云端打包**
在项目manifest.json页面“App模块配置”项的“OAuth(登录鉴权)”下勾选“一键登录(uni-verify)”
![](
https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/client/doc/univerify/hx.png
)
-
**离线打包**
+
Android平台:
[
一键登录Android离线打包配置
](
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/oauth
)
+
Android平台:
[
一键登录Android离线打包配置
](
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/oauth
?id=%e4%b8%80%e9%94%ae%e7%99%bb%e5%bd%95
)
+
iOS平台:
[
一键登录iOS离线打包配置
](
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/iOSModuleConfig/oauth?id=%e4%b8%80%e9%94%ae%e7%99%bb%e5%bd%95%ef%bc%88univerify%ef%bc%89h
)
### 开通uniCloud服务
一键登录在客户端获取
token 后,必须在 uniCloud
换取手机号码。
在uniCloud的云函数中拿到手机号后,可以
再转给传统服务器
,也可以通过云函数url方式生成普通的http接口给5+ App使用。
一键登录在客户端获取
access_token 后,必须在
[
uniCloud
](
https://uniapp.dcloud.io/uniCloud/README
)
换取手机号码。
在uniCloud的云函数中拿到手机号后,可以
直接使用,也可以再转给传统服务器处理
,也可以通过云函数url方式生成普通的http接口给5+ App使用。
开通uniCloud是免费的,其中阿里云是全免费,腾讯云是提供一个免费服务空间。
注意:
**虽然一键登录需要uniCloud,但并不要求开发者把所有的后台服务都迁移到uniCloud**
关于uniCloud的介绍和使用:
[
uniCloud说明文档
](
https://uniapp.dcloud.io/uniCloud/README
)
更多说明请参考:
[
uniCloud使用一键登录服务
](
https://uniapp.dcloud.net.cn/uniCloud/univerify
)
### 使用一键登录
#### 获取可用的服务提供商
>5+ App(Wap2App)请参考:[5+ App一键登录使用指南](https://ask.dcloud.net.cn/article/38009)
#### 获取可用的服务提供商
其中一键登录对应的服务提供商ID为 'univerify',当包含 'univerify' 时说明支持一键登录
```
...
...
@@ -74,19 +74,21 @@ uni.getProvider({
```
#### 预登录
(可选) 进行预登录操作,在预登录成功后有效时间内,进行登录操作 速度会显著提升
#### 预登录(可选)
预登录操作可以判断当前设备环境是否支持一键登录,如果能支持一键登录,此时可以显示一键登录选项,同时预登录会准备好相关环境,显著提升一键登录的操作速度。
如果当前设备环境不支持一键登录,此时应该显示其他的登录选项。
`uni.preLogin(options)`
```
uni.preLogin({
provider: 'univerify',
success(){
//
成功
success(){
//预登录成功
//
显示一键登录选项
},
fail(res){
// 失败
fail(res){ // 预登录失败
// 不显示一键登录选项(或置灰)
// 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
console.log(res.errCode)
console.log(res.errMsg)
}
...
...
@@ -95,12 +97,6 @@ uni.preLogin({
```
#### 关闭一键登录页面
```
uni.closeAuthView()
```
#### 请求登录认证
弹出用户授权界面。根据用户操作及授权结果返回对应的回调
...
...
@@ -110,13 +106,13 @@ uni.closeAuthView()
```
uni.login({
provider: 'univerify',
// 自定义样式
univerifyStyle: {},
success(res){
console.log(res.authResult)// {openid:'deviceIDlength+deviceID+gyuid',access_token:'接口返回的 token'}
univerifyStyle: { // 自定义登录框样式
//参考`univerifyStyle 数据结构`
},
success(res){ // 登录成功
console.log(res.authResult); // {openid:'deviceIDlength+deviceID+gyuid',access_token:'接口返回的 token'}
},
fail(res){
// 失败
fail(res){ // 登录失败
console.log(res.errCode)
console.log(res.errMsg)
}
...
...
@@ -193,20 +189,48 @@ univerifyStyle 数据结构
```
#### 关闭一键登录界面
请求登录认证操作完成后,不管成功或失败都不会关闭一键登录界面,需要主动调用
`closeAuthView`
方法关闭。
客户端登录认证完成只是说明获取 access_token 成功,需要将此数据提交到服务器获取手机号码,完成业务服务登录逻辑后通知客户端关闭登录界面。
```
uni.closeAuthView()
```
### 换取手机号码
通过uniCloud 将返回的access_token置换为真实的手机号码。
** 重要提示:正常情况下,用户的手机号码信息不应该返回给客户端 !!! **
我们这里以调用云函数为例:
新建云函数上传部署,代码实现可以参考:
### 换取手机号码
在 uniCloud 中可以将客户端获取的 access_token 置换为真实的手机号码。
** 重要提示:为了保证数据的安全,用户手机号码信息不应该返回给客户端 !!! **
![](
https://img-cdn-qiniu.dcloud.net.cn/uploads/article/20201125/81b289aace20942def2e98a4cd41b97e.png
)
以下示例为调用云函数 uniCloud.getPhoneNumber 获取手机号:
```
'use strict';
exports.main = async (event, context) => {
//获取客户端提交的openid、access_token
var paramsPost = event;
var openIdParam = paramsPost.openid;
var accessTokenParam = paramsPost.access_token;
//调用 uniCloud.getPhoneNumber 获取手机号码
const res = await uniCloud.getPhoneNumber({
'provider': 'univerify',
'appid': '__UNI__XXXXXXX', //应用的appid
'apiKey': 'XXXXXXXXXXXXXX', //开通一键登录服务后,从后台获取的apiKey
'apiSecret': 'XXXXXXXXXXXXXX', //开通一键登录服务后,从后台获取的apiSecret
'accessToken': accessTokenParam,
'openid': openIdParam
});
/*
res对象中包含手机号码等信息,数据结构如下所示:
大部分开发者应该在云函数中,实现用户的登录逻辑,返回客户端登录结果即可。
我们这里为了示例,选择将用户信息返回给 客户端(注意,这一行为在真实的业务环境中,不应该发生。)
*/
uniCloud.logger.log(res);
return res;
};
```
返回
数据示例
返回
res 数据示例:
```
{
"data": {
...
...
@@ -228,32 +252,32 @@ univerifyStyle 数据结构
```
[
uniCloud对一键登录功能的详细说明
](
https://uniapp.dcloud.net.cn/uniCloud/univerify
)
更多说明请参考:
[
uniCloud使用一键登录服务
](
https://uniapp.dcloud.net.cn/uniCloud/univerify
)
## Q&A
### 常见错误代码
## 错误码
| 错误码 | 错误描述 |
| -:- | -:- |
| 1000 | 当前 uniAppid 尚未开通一键登录 |
| 1001 | 应用所有者账号信息异常,请检查账号一键登录服务是否正常 |
| 1002 | 应用所有者账号信息异常,请检查账号余额是否充足 |
| 4001 | 请求参数异常 |
|30001 |当前网络环境不适合执行该操作|
|30002 |用户点击了其他登录方式|
|30003 |用户关闭验证界面|
|30004 |其他错误|
|30005 |预登录失败|
|30006 |一键登录失败|
|30007 |获取本机号码校验token失败|
|40047 |一键登录取号失败|
|40053 |手机号校验失败|
### 提示 非移动网关ip地址
| 1001 | 应用所有者账号信息异常,请检查账号一键登录服务是否正常 |
| 1002 | 应用所有者账号信息异常,请检查账号余额是否充足 |
| 4001 | 请求参数异常 |
| 30001 | 当前网络环境不适合执行该操作 |
| 30002 | 用户点击了其他登录方式 |
| 30003 | 用户关闭验证界面 |
| 30004 | 其他错误 |
| 30005 | 预登录失败 |
| 30006 | 一键登录失败 |
| 30007 | 获取本机号码校验token失败 |
| 40047 | 一键登录取号失败 |
| 40053 | 手机号校验失败 |
## 常见问题
-
提示“非移动网关ip地址”
大多数情况 是因为部分特定设备,不支持双卡双待的网络环境
### 代码 40201 提示 源IP鉴权失败
-
错误代码 40201,提示“源IP鉴权失败”
检查一下手机卡类型是否是正常运营商手机卡,关闭飞行模式后重新尝试
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录