uniapp App端实人认证

1、充点钱,因为调一次要8毛多

2、右键项目,创建unicloud云开发环境

3、创建一个文件夹,名称随便  uni-cloud-verify

 4、右键文件夹,管理云函数的扩展库/公共模块依赖

  点这个,然后确认

5、配置manifest.json里面App模块配置打开实人认证,然后打自定义基座包

6、正在打包 loading.................

7、去uni-cloud-verify文件里面新建index.obj.js(云对象)

 8、编辑index.obj.js,差多就下面这样

// callFunction
'use strict';
module.exports = {
    // __before调用其他方法前会先调用这个方法
    _before(context) {
        // 创建实人认证实例
        this.frvManager = uniCloud.getFacialRecognitionVerifyManager({
            requestId: this.getUniCloudRequestId()
        })
    },
    /**
     * 获取certifyId
     * @param realName 姓名
     * @param idCard 身份证号
     * @param metaInfo  uni.getFacialRecognitionMetaInfo()获取的
     */
    async getCertifyId({ realName, idCard, metaInfo }) {
        // 会先调用_before
        try {
            const result = await this.frvManager.getCertifyId({ realName, idCard, metaInfo });
            return result
        } catch (e) {
            return { errCode: 500, message: '获取CertifyId失败' };
        }
    },
    /**
     * 获取认证的结果
     */
    async getAuthResult(certifyId) {
        try {
            const result = await this.frvManager.getAuthResult({ certifyId });
            return result
        } catch (e) {
            return { errCode: 500, message: '获取认证失败' };
        }
    }
}

9、这样云函数(云对象就OK了)

10、去vue页面写个方法使用

  这个是我写的逻辑,就是吧realName,idCard,传进去

 

export async function uniCloudVerifyFunction({ realName, idCard }) {
    // 获取设备信息
    const metaInfo = uni.getFacialRecognitionMetaInfo();
    // 注册实人认证
    const uniCloudVerify = uniCloud.importObject('uni-cloud-verify');
    // 获取CertifyId
    const certifyidResult = await uniCloudVerify.getCertifyId({ realName, idCard, metaInfo })
    if (certifyidResult.errCode != 0) return Promise.reject({ code: 500, msg: '获取certifyid失败,请联系管理员处理!' })
    const certifyId = certifyidResult.certifyId;

    // 开始认证
    const startFacialRecognitionVerify = (certifyId) => {
        return new Promise((resolve, reject) => {
            uni.startFacialRecognitionVerify({
                certifyId: certifyId,
                success: async res => {
                    const result = await uniCloudVerify.getAuthResult(res.certifyId);
                    resolve(res);
                },
                fail: err => {
                    // 验证失败,要扣钱的,certifyId已失效
                    // err.errCode == '10013'
                    // 验证中断,不扣钱
                    // err.errCode == '10011'
                    reject({ code: err.errCode, msg: err.errMsg })
                }
            });
        })
    }
    // 开始认证
    try {
        const facialRecognitionVerifyValue = await startFacialRecognitionVerify(certifyId);
    } catch (e) {
        return Promise.reject(e);
    }
    // 获取结果
    const authResult = await uniCloudVerify.getAuthResult(certifyId);
    if (authResult.errCode != 0) return Promise.reject({ code: 500, msg: '获取认证信息失败,请联系管理员处理!' });
    console.log(authResult, '认证后数据')
    return Promise.resolve(authResult);
}

 


 

11、使用 完成

uniCloudVerify({ realName, idCard }).then(res => {
    // 提示成功
}).catch(() => {
    // 提示失败
})

12、顺便记一下云函数,云对象的使用

// uni-cloud-verify这个就是文件夹的名称
const uniCloudVerify = uniCloud.importObject('uni-cloud-verify')
// 然后就可以使用云对象的方法了
uniCloudVerify.xxx()

// 云函数呢就一个方法
uniCloud.callFunction({
    name: 'uni-cloud-verify',
    data: {}
})

 

posted @ 2023-10-19 10:36  孙大猛子  阅读(566)  评论(0编辑  收藏  举报