Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
anyefeiyu
uni-app
提交
a84d20e7
U
uni-app
项目概览
anyefeiyu
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
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,发现更多精彩内容 >>
未验证
提交
a84d20e7
编写于
12月 10, 2020
作者:
DCloud-yyl
提交者:
GitHub
12月 10, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update univerify.md
重新整理内容
上级
5c12560e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
242 deletion
+38
-242
docs/univerify.md
docs/univerify.md
+38
-242
未找到文件。
docs/univerify.md
浏览文件 @
a84d20e7
# 一键登录(univerify) 使用指南
> HBuilderX 2.9.12+ 版本新增支持 `一键登录`
## 一 概述
### 1.1 简介
一键登录是DCloud联合个推公司推出的,整合了三大运营商网关认证能力的服务。
## 概述
`一键登录`
是DCloud联合个推公司推出的,整合了三大运营商网关认证能力的服务。
通过与运营商,个验深度合作,实现APP用户无需输入帐号密码,即可使用本机手机号码自动登录的能力。
一键登录 是替代短信验证登录的下一代登录验证方式,能消除现有短信验证模式等待时间长、操作繁琐和容易泄露的痛点。
`一键登录`
是替代短信验证登录的下一代登录验证方式,能消除现有短信验证模式等待时间长、操作繁琐和容易泄露的痛点。
+
支持项目类型:uni-app,5+ App,Wap2App
+
支持系统平台: Android,iOS
+
支持运营商: 移动,联通,电信
[attach]64141[/attach]
![](
https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/client/doc/univerify/demo.png
)
### 1.2 原理
### 原理
在用户同意授权的操作前提下,访问运营商网关鉴权,获取当前设备access_token等信息。
通过uniCloud 将access_token信息 置换为当前设备的真实手机号码
![](
https://dcloud-img.oss-cn-hangzhou.aliyuncs.com/client/doc/univerify/process.png
)
前置条件:
+
手机安装有sim卡
+
手机开启数据流量
+
开通uniCloud服务
[attach]64512[/attach]
### 1.3 产品优势
-
** 便捷 **
### 产品优势
-
**便捷**
优化了现有短信验证方式,免短信验证一键免密登录APP,耗时极短,减轻用户记忆负担,能有效降低用户流失率,提升运营效果
-
**
安全
**
-
**
安全
**
采用运营商网关认证,避免短信劫持,有效提升安全性
## 开通使用
### 开通服务
开发者需要登录
[
DCloud开发者中心
](
https://dev.dcloud.net.cn/
)
,申请开通一键登录服务。
具体文档:
[
开通一键登录的详细教程
](
https://ask.dcloud.net.cn/article/37965
)
## 二 集成步骤
### 2.1 开通服务
请参考:
[
开通一键登录指南
](
https://ask.dcloud.net.cn/article/37965
)
### 2.2 集成模块
+
云端打包
manifest-->OAuth配置-->univerify配置
+
离线打包
[android/ios 离线打包文档](https://nativesupport.dcloud.net.cn/AppDocs/README)
### 2.3 开通uniCloud服务
一键登录,token换取手机号码需要基于uniCloud服务。
对于uni-app 应用:
直接开通当前应用的uniCloud服务,即可使用。
对于5+ 应用:
需要新建一个uni-app 应用,且开通uniCloud服务。
虽然一键登陆需要uniCloud,但并不要求开发者把所有的后台服务都迁移到uniCloud。
在uniCloud的云函数中拿到手机号后,可以再转给传统服务器,也可以通过云函数url方式生成普通的http接口给5+app使用。
### 集成模块
-
**云端打包**
在项目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
)
+
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使用。
开通uniCloud是免费的,其中阿里云是全免费,腾讯云是提供一个免费服务空间。
关于uniCloud的介绍和使用:
[
uniCloud说明文档
](
https://uniapp.dcloud.io/uniCloud/README
)
注意:
**虽然一键登录需要uniCloud,但并不要求开发者把所有的后台服务都迁移到uniCloud**
关于uniCloud的介绍和使用:
[
uniCloud说明文档
](
https://uniapp.dcloud.io/uniCloud/README
)
###
2.3 代码实现 for uni-app
###
使用一键登录
####
2.3.1
获取服务提供商
#### 获取服务提供商
一键登录对应的服务提供商ID
-
id 为 'univerify'
```
...
...
@@ -99,8 +75,7 @@ uni.getProvider({
```
#### 2.3.2 预登录
#### 预登录
(可选) 进行预登录操作,在预登录成功后有效时间内,进行登录操作 速度会显著提升
`uni.preLogin(options)`
...
...
@@ -121,13 +96,13 @@ uni.preLogin({
```
####
2.3.3
关闭一键登录页面
#### 关闭一键登录页面
```
uni.closeAuthView()
```
####
2.3.4
请求登录认证
#### 请求登录认证
弹出用户授权界面。根据用户操作及授权结果返回对应的回调
...
...
@@ -218,198 +193,19 @@ univerifyStyle 数据结构
```
### 2.4 代码实现 for 5+ App、Wap2App
#### 2.4.1 获取 AuthService
一键登录对应的 AuthService 对象
-
id 为 'univerify'
-
description 为 '一键登录'
```
var auth = null
plus.oauth.getServices(function(services) {
if (server.id = 'univerify'){
auth = server;
//server.id = 'univerify'
//server.description = "一键登录"
}
}
```
#### 2.4.2 预登录
(可选) 进行预登录操作,在预登录成功后有效时间内,进行登录操作 速度会显著提升
`auth.preLogin(successCallback,errorCallback)`
```
auth.preLogin(function(){
// 成功
},function(error){
// 失败
error.status
error.message
})
```
### 换取手机号码
#### 2.4.3 关闭一键登录页面
```
auth.closeAuthView()
```
#### 2.4.4 请求登录认证
弹出用户授权界面。根据用户操作及授权结果返回对应的回调
`auth.login(successCallback, errorCallback, AuthOptions);`
```
auth.login(function(event){
{
openid : 'deviceIDlength+deviceID+gyuid',
access_token: '接口返回的 token',
}
},function(error){
// 失败
error.status
error.message
},{
// 自定义页面参数
AuthOptions : {
}
})
```
AuthOptions 数据结构
```
{
"backgroundColor": "页面背景颜色,默认白色 #ffffff",
"icon": {
"path": "可选 自定义本地图片 默认显示logo ",
"width": "可选 宽度 默认60",
"height": "可选 高度 默认60"
},
"phoneNum": {
"color": "字体颜色 默认黑色 #000000",
"fontSize": "字体大小 默认 18加粗"
},
"slogan": {
"color": "字体颜色 默认 #8a8b90",
"fontSize": "字体大小 默认 12"
},
"authButton": {
"normalColor": "正常状态颜色 #3479f5",
"highlightColor": "按下状态颜色 #2861c5",
"disabledColor": "不可点击时颜色 #73aaf5",(仅ios支持)
"width": "宽度 默认 设备屏幕宽度左右各留 32px",
"height": "高度 默认 94px",
"textColor": "#ffffff",
"title": "本机号码一键登录"
},
"otherLoginButton": {
"visible": "true 是否显示其他登录按钮,默认显示"
"normalColor": "正常状态颜色 #f8f8f8",
"highlightColor": "按下状态颜色 #dedede",
"width": "宽度 默认 设备屏幕宽度左右各留 32px",
"height": "高度 默认 94px",
"textColor": "#000000",
"title": "其他登录方式",
"borderWidth": "边框宽度 1px",(仅ios支持)
"borderColor": "边框颜色 #c5c5c5"(仅ios支持)
},
"privacyTerms": {
"textColor": "#8a8b90 文字颜色",
"termsColor": "#1d4788 协议文字颜色"
"prefix": "我已阅读并同意",
"suffix": "并使用本机号码登录",
"fontSize": 12号字体,
"privacyItems": [
{
"url": "https://",
"title": "用户服务协议"
}
]
}
}
```
返回数据示例
```
{
"target": {
"id": "univerify",
"description": "一键登录",
"authResult": {
"openid": "208E2FBE6EF64DF3B2D377D886EF2A14124262bfd7ae16465ea0f0634554dcee7636",
"access_token": "ZGI4NjkxZWE4YjAyNGUzMjhiMmZiNDcwODBjYjc5MDF8fDJ8djJ8Mg=="
}
}
}
```
### 2.5 换取手机号码
通过uniCloud api 将返回的access_token置换为真实的手机号码。
通过uniCloud 将返回的access_token置换为真实的手机号码。
** 重要提示:正常情况下,用户的手机号码信息不应该返回给客户端 !!! **
#### 2.5.1 对于uni-app:
支持两种调用方式:
1 直接调用云函数(推荐)
2 将云函数 http服务化,然后调用http服务
我们这里以调用云函数为例:
直接新建云函数上传部署即可,代码实现可以参考:
[attach]65024[/attach]
#### 2.5.2 对于5+ App:
只支持一种调用方式,即: 云函数 http服务化
前置条件:已创建一个uni-app 应用,且开通uniCloud服务。
操作步骤:
+
新建云函数,实现一键登录功能并上传部署。
创建云函数,代码参考uni-app 实现
[attach]65033[/attach]
+
将刚才上传的云函数,开通http服务状态。
[attach]65031[/attach]
+
5+ 应用访问uni-app 应用的 http 服务
[attach]65039[/attach]
新建云函数上传部署,代码实现可以参考:
![](
https://img-cdn-qiniu.dcloud.net.cn/uploads/article/20201125/81b289aace20942def2e98a4cd41b97e.png
)
返回数据示例
```
...
...
@@ -433,7 +229,7 @@ AuthOptions 数据结构
```
[
关于
uniCloud对一键登录功能的详细说明
](
https://uniapp.dcloud.net.cn/uniCloud/univerify
)
[
uniCloud对一键登录功能的详细说明
](
https://uniapp.dcloud.net.cn/uniCloud/univerify
)
## Q&A
...
...
@@ -457,7 +253,7 @@ AuthOptions 数据结构
|40053 |手机号校验失败|
### 提示 非移动网关ip地址
大多数情况 是因为部分特定设备,不支持双卡双待的网络环境
导致
大多数情况 是因为部分特定设备,不支持双卡双待的网络环境
### 代码 40201 提示 源IP鉴权失败
检查一下手机卡类型是否是正常运营商手机卡,关闭飞行模式后重新尝试
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录