首先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( 'getFaceRecognition' ) ;
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>