uniapp 实人认证

news2024/10/23 10:28:37

首先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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

33.获取入口点

上一个内容&#xff1a;32.双击列表启动目标游戏 前置知识 25.入口点注入&#xff08;查看pe头&#xff09;、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图&#xff1a; 代码实现&#xff1a;原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型&#xff08;LMs&#xff09;在各种自然语言处理&#xff08;NLP&#xff09;任务中的广泛应用&#xff0c;模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效&#xff0c;但计算成本高昂&#xff0c;尤其是在大型模型上。为了解决这一问题&a…

CSS样式、选择器、盒子模型

标题 文章目录 一、CSS样式内联样式内部样式外部样式 二、选择器三、颜色四、盒子模型&#xff08;内边距padding、边框border、外边框margin&#xff09; 一、CSS样式 可分为&#xff1a;内联样式、内部样式、外部样式 优先级&#xff1a; 内联样式 >内部样式 >外部样式…

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法 注意:仅仅是SDK这种刚安装时的配置的下载,不要和开源库的镜像源扯到一起&#xff01;&#xff01;&#xff01;&#xff01; 最近想玩AndroidStudio的JNI开发, 想着安装后…

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义&#xff1a; 阻抗在机器人领域中&#xff0c;通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时&#xff0c;环境对机器人施加一个作用力&#xff0c;而机器人也会对环境施加一个反作用力。这个反…

【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f4d5;引言 ⛓决策树的基本原理 1. 决策树的结构 2. 信息增益 熵的计算公式 信息增益的计算公式 3. 基尼指数 4. 决策树的构建 &#x1f916;决策树的代码实现 1. 数据准备 2. 决策树模型训练 3.…

Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

第十五天&#xff0c;二叉树part03&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解&#xff1a;代码随想录完全二叉树的节点个数 视频讲解…

Mistral AI 发布 Codestral-22B,精通 80+ 编程语言,22B 参数超越 70B Code Llama

前言 大型语言模型 (LLM) 在代码生成领域展现出巨大的潜力&#xff0c;但现有的模型在支持的编程语言数量、生成速度和代码质量方面仍存在局限性。法国 AI 独角兽 Mistral AI 近期发布了其首款代码生成模型 Codestral-22B&#xff0c;宣称在多项指标上超越了 GPT-4 和 Llama3&…

计算机网络:应用层 - 万维网 HTTP协议

计算机网络&#xff1a;应用层 - 万维网 & HTTP协议 万维网 WWW统一资源定位符 URL 超文本传输协议 HTTP非持续连接持续连接非流水线流水线 代理服务器HTTP报文 万维网 WWW 万维网是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从互联网上的一个站点…

企业的差旅费用还能更节省吗?

对于多数企业而言&#xff0c;差旅成本是仅次于人力资源成本的第二大可控成本。 差旅成本除了差旅产品采购费用、差旅服务费用这些显性成本外&#xff0c;还有预订时间消耗、审批环节、报销流程、票据核查等隐性成本。 据调研数据显示&#xff1a;企业对于专业差旅管理的认知度…

测试服务器端口是否打开,服务器端口开放异常的解决方法

在进行服务器端口开放性的测试时&#xff0c;我们通常使用网络工具来验证目标端口是否响应特定的协议请求。常用的工具包括Telnet、Nmap、nc&#xff08;netcat&#xff09;等。这些工具可以通过发送TCP或UDP数据包到指定的IP地址和端口&#xff0c;然后分析返回的数据包&#…

「Python-docx 专栏」docx 获取页面大小、设置页面大小(纸张大小)

本文目录 前言一、docx纸张大小介绍1、document.xml① 关于 document.xml 的一些知识点② 纸张大小在哪里③ 纸张大小都有啥④ EMU对应的尺寸列表二、获取docx纸张大小1、完整代码2、运行效果图三、python为docx设置纸张大小1、完整代码2、效果图前言 今天的这边文章,我们来说…

DNS部署与安全

一、DNS 英文全称&#xff1a;Domain Name Service 含义&#xff1a;域名服务 作用&#xff1a;为客户机提供域名解析服务 二、域名组成 域名组成概述 &#xff08;1&#xff09;如"www.sina.com.cn”是一个域名&#xff0c;从严格意义上讲&#xff0c;“sina.com.cn”…

总结 CSS 选择器的常见用法

一&#xff0c;什么是css 在前端网页中&#xff0c;css就相当于化妆术&#xff0c;把一个很生硬的网页页面变得排版有序起来。 CSS可以对网页中的元素位置进行像素级精准控制&#xff0c;实现美化页面的效果&#xff0c;也能做到页面的样式和结构分离。 二&#xff0c;css的基…

前端下载文件流,axios设置responseType: arraybuffer/blob无效

项目中调用后端下载文件接口&#xff0c;设置responseType: arraybuffer,实际拿到的数据data是字符串 axios({method: post,url: /api/v1/records/recording-file/play,// 如果有需要发送的数据&#xff0c;可以放在这里data: { uuid: 06e7075d-4ce0-476f-88cb-87fb0a1b4844 }…

COSMOSPANDA星际熊猫闪耀助阵2023中国(广州)国际时尚产业大会

在2023年12月27日至12月29日于广州海心沙盛大举行的2023中国&#xff08;广州&#xff09;国际时尚产业大会上&#xff0c;备受瞩目的星际熊猫以其独特的IP精神与理念&#xff0c;成为本次活动的焦点。 打造“时尚之都”是提升广州国际知名度、消费繁荣度、商业活跃度的重要抓…

Python 基础:异常

目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&a…

《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结

介绍了一个名为TimeFM的新型时间序列预测基础模型&#xff0c;该模型受启发于自然语言处理领域的大语言模型&#xff0c;通过再大规模真实世界和合成时间序列数据集上的预训练&#xff0c;能够在多种不同的公共数据集上实现接近最先进监督模型的零样本预测性能。 该模型使用真…

数据资产与用户体验优化:深入挖掘用户数据,精准分析用户需求与行为,优化产品与服务,提升用户体验与满意度,打造卓越的用户体验,赢得市场认可

一、引言 在数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。通过深入挖掘和分析用户数据&#xff0c;企业能够精准把握用户需求和行为&#xff0c;从而优化产品与服务&#xff0c;提升用户体验和满意度。这不仅有助于企业在激烈的市场竞争中脱颖而出&#xff0c;还…

人工智能系列:一文让你读懂什么是模式识别

目录 1.什么是模式识别 1.1人工智能和模式识别 1.2信息感知 1.3计算机模式识别 1.4模式识别应用 1.5模式识别发展简史 1.6相关问题和领域 2.模式识别形式化 2.1模式和模式识别 2.2模式表示 2.3特征空间 2.4特征空间中的分类 2.5一个例子 3.模式识别系统流程 4.模…