最下面有demo
首先Dcloud创建云服务空间,开启一键登录并充值
下一步
1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间
2. cloudfunctions右键 新建云函数,任意命名(例:veify),然后右键项目》管理公告模块或扩展库依赖》选择

3.点击 云函数veify》目录下的 “ index.js ” 改名 “ index.obj.js ” 否则获取不到
3.1 index.obj.js 内代码如下
'use strict';
module.exports = {
// __before调用其他方法前会先调用这个方法
_before(context) {
// 创建实人认证实例
this.frvManager = uniCloud.getFacialRecognitionVerifyManager({
requestId: this.getUniCloudRequestId()
})
},
async getCertifyId({ realName, idCard, metaInfo }) {
// 会先调用_before
try {
const result = await this.frvManager.getCertifyId({ realName, idCard, metaInfo });
return result
} catch (e) {
throw { errCode: 500, message: '获取认证失败,请检查信息的正确性' };
}
},
// 获取认证的结果
async getAuthResult(certifyId) {
try {
const result = await this.frvManager.getAuthResult({ certifyId });
return result
} catch (e) {
throw { errCode: 500, message: '认证失败' };
}
}
}
3.2 打包自定义包测试
4.在页面上获取云函数
// 注册实人认证
// veify为云函数文件名
const uniCloudVerify = uniCloud.importObject('veify');
5,封装认证代码
//点击认证
submit(){
let data = {
realName:this.params.realName,
idCard:this.params.idNumber
}
this.uniCloudVerifyFunction(data).then(res => {
console.log('实名认证yes',res);
if(res.authState == 'SUCCESS'){
//成功
}
// 提示成功
}).catch(err => {
console.log('实名认证no',err);
// 提示失败
})
},
//封装
async uniCloudVerifyFunction({ realName, idCard }) {
// 获取设备信息
const metaInfo = uni.getFacialRecognitionMetaInfo();
// 获取CertifyId
const certifyidResult = await uniCloudVerify.getCertifyId({ realName, idCard, metaInfo })
if (certifyidResult.errCode != 0) return Promise.reject({ code: 500, msg: '获取certifyid失败,请联系管理员处理!' })
const certifyId = certifyidResult.certifyId;
// 开始认证
return new Promise((resolve, reject) => {
uni.startFacialRecognitionVerify({
certifyId: certifyId,
success: async res => {
console.log(res);
const result = await uniCloudVerify.getAuthResult(certifyId);
resolve(result);
},
fail: err => {
reject({ code: err.errCode, msg: err.errMsg })
}
});
})
}
完成
下面是我的demo,供参考
<template>
<view>
<view class="navBbutPart" >
<button class="butsty font30" hover-class="butstyHover"
@click="$u.throttle(submit, 1000)"> 人脸验证 </button>
</view>
</view>
</template>
<script>
import { accountAuthenticationedit,accountAuthenticationadd } from "@/api/all.js"
// 注册实人认证
const uniCloudVerify = uniCloud.importObject('veify');
export default {
name:"getBack",
props:{
params:{},
//是否修改
edit:{
default:false
}
},
data() {
return {
};
},
onLoad() {
// console.log(uni.getFacialRecognitionMetaInfo());
},
methods:{
async uniCloudVerifyFunction({ realName, idCard }) {
// 获取设备信息
const metaInfo = uni.getFacialRecognitionMetaInfo();
// 获取CertifyId
const certifyidResult = await uniCloudVerify.getCertifyId({ realName, idCard, metaInfo })
if (certifyidResult.errCode != 0) return Promise.reject({ code: 500, msg: '获取certifyid失败,请联系管理员处理!' })
const certifyId = certifyidResult.certifyId;
// 开始认证
return new Promise((resolve, reject) => {
uni.startFacialRecognitionVerify({
certifyId: certifyId,
success: async res => {
console.log(res);
const result = await uniCloudVerify.getAuthResult(certifyId);
resolve(result);
},
fail: err => {
reject({ code: err.errCode, msg: err.errMsg })
}
});
})
},
submit(){
let data = {
realName:this.params.realName,
idCard:this.params.idNumber
}
this.uniCloudVerifyFunction(data).then(res => {
console.log('实名认证yes',res);
if(res.authState == 'SUCCESS'){
if(!this.edit){
accountAuthenticationadd(this.params).then(resapi=>{
console.log('实名认证接口',resapi);
this.com.back()//返回
})
}else{
accountAuthenticationedit(this.params).then(resapi=>{
this.com.back()
})
}
}
// 提示成功
}).catch(err => {
console.log('实名认证no',err);
// 提示失败
})
}
}
}
</script>
<style scoped lang="scss">
.navBbutPart{
width: 90%;
position: fixed;bottom: 200rpx;
padding: 0 5%;
button{
border-radius: 50rpx;
}
}
</style>