uniApp对接实人认证

前端代码部分

<template><view class="wrap"><view class="box"><view class="item flex-row align-items-center space-between"><view class="name"><text style="color:#FF4D4D">*</text>姓名</view><view class="value"><input type="text" placeholder="请输入姓名" placeholder-class="plc" v-model="realName"></view></view><view class="item flex-row align-items-center space-between"><view class="name"><text style="color:#FF4D4D">*</text>身份证号码</view><view class="value"><input type="text" placeholder="请输入身份证号码" placeholder-class="plc" v-model="idCard"></view></view></view><view class="btn" @click="submit">确认并进行人脸认证</view></view>
</template><script>import {error,jumpPage,isLogin,success} from "@/utils/tools"import {prefectUserInfo} from "@/utils/api/api"export default {data() {return {baseUrl: getApp().globalData.baseUrl,userInfo:{},realName: '',idCard: ''}},onLoad() {this.userInfo = uni.getStorageSync('userInfo')},methods: {submit() {const _this = this// 1. 获取设备信息const metaInfo = uni.getFacialRecognitionMetaInfo()if (!metaInfo) {error('提示当前设备不支持刷脸')return}//在调用之前可以自己加一些获取摄像头权限等操作...uniCloud.callFunction({name: 'startFaceVerify',data: {metaInfo,realName: _this.realName,idCard: _this.idCard,step: 1},success({result}) {if(result.code === 500){error(result.msg)return}// 3. 客户端调起sdk刷脸认证uni.startFacialRecognitionVerify({certifyId: result.data,success(success) {//获取认证结果uniCloud.callFunction({name: 'startFaceVerify',data: { certifyId: result.data },success({result}) {const params = {id: _this.userInfo.id,user_face_image: result.data.pictureUrl,realname: _this.realName,idcard: _this.idCard}prefectUserInfo(params).then(response =>{if(response.errorCode === 0){uni.navigateBack()}else{error('认证失败')}})},fail(e) { error('认证失败') }})},fail(e) { error('认证失败') }})},fail(e) { error('认证失败') }})}}}
</script>
<style>page {background: #F7F7F7;}
</style>
<style lang="scss">.wrap {background: #F7F7F7;padding: 15px;display: flex;flex-direction: column;align-items: center;.box {width: 100%;padding: 0px 15px;border-radius: 10px;background: #FFFFFF;.item {width: 100%;height: 50px;.name {font-size: 14px;font-weight: 500;color: #121212;}.value {display: flex;align-items: center;input {width: 225px;font-size: 12px;font-weight: 500;color: #666666;text-align: right;}.plc {font-size: 12px;font-weight: 500;color: #666666;}}}}.btn {width: 305px;height: 44px;border-radius: 22px;display: flex;flex-direction: row;justify-content: center;align-items: center;background: linear-gradient(106deg, #5EBBFF 21%, #5670FE 68%);box-shadow: 0px 4px 10px 0px #BECCFF;font-size: 14px;font-weight: bold;color: #FFFFFF;margin-top: 365px;}}
</style>

云函数部分

// index.js 云函数
'use strict'
const crypto = require('crypto')
exports.main = async (event, context) => {// console.log('这个是什么',event.step);// return// 获取实人认证实例const frvManager = await uniCloud.getFacialRecognitionVerifyManager({requestId: context.requestId})if (event.step == 1) {try {/*** 获取certifyId* @return certifyId 认证id,用于客户端调用认证接口及云函数获取认证结果*/const result = await frvManager.getCertifyId({realName: event.realName,idCard: event.idCard,metaInfo: event.metaInfo,needPicture: true //是否采集人脸照片})if (result.errCode == 0) return {code: 200,data: result.certifyId,msg: '获取certifyId成功'}return {code: 500,data: '',msg: `获取certifyId失败:${ result.errMsg }`}} catch (err) {console.log('err', err);return {code: 500,data: '',msg: '请检查您填写的姓名与身份证号是否正确'}}} else {// 获取认证结果const result = await frvManager.getAuthResult({certifyId: event.certifyId})if (result.authState == 'SUCCESS') return {code: 200,data: result}// 认证失败if (result.authState == 'FAIL') return {code: 500,data: result.certifyId,msg: `认证失败:${ result.errMsg }`}}
}

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

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

相关文章

pytest 并发执行用例(基于受限的测试资源)

概要 本文主要介绍了如何在测试资源&#xff08;被测对象&#xff09;受限的情况下&#xff0c;使用 pytest 进行并发测试以减少总体测试时间的方法和过程。 背景 在软件开发过程中&#xff0c;我们通常使用测试用例来持续保证软件的质量&#xff08;例如&#xff0c;确保关…

结构化智能编程:用树形向量存储重构AI代码理解范式

结构化智能编程:用树形向量存储重构AI代码理解范式 告别暴力embedding,通过分层存储策略让AI精准理解百万行代码库 在AI编程助手日益普及的今天,开发者面临一个新的困境:当项目规模达到数万甚至数百万行代码时,传统的暴力向量化方法不仅效率低下,而且往往导致AI理解偏差。…

GPT5 / 深度研究功能 无法触发

具体表现为&#xff1a; 1.没有GPT5标识2.回答是GPT43.无法触发深度研究功能请问如何解决&#xff1f;

一键脚本:自动安装 Nginx + Certbot + HTTPS(Let‘s Encrypt)

创建脚本文件​&#xff1a; vi setup_nginx_https.sh脚本内容&#xff1a; #!/bin/bash# # 一键安装 Nginx Certbot HTTPS (CentOS 7) # 功能&#xff1a;自动安装 Nginx、Certbot&#xff0c;配置 HTTPS&#xff0c;自动续期 # 使用方法&#xff1a;./setup_nginx_https.s…

SpringAI与MCP

MCP是什么&#xff1f;MCP 服务 代理服务&#xff08;Proxy&#xff09; 标准化接口 自动化适配MCP 的目的&#xff0c;就是让 AI 应用不再“为每个工具定制对接 ”&#xff0c;而是像使用 USB-C 一样&#xff0c;“插上即用”任何外部工具。没mcp之前不同的工具入参和出参千…

Coze用户退出登录流程分析-后端源码

前言 本文将深入分析Coze Studio项目的用户退出登录功能后端实现&#xff0c;通过源码解读来理解整个退出登录流程的架构设计和技术实现。退出登录作为用户认证系统的重要组成部分&#xff0c;主要负责清理用户会话状态&#xff0c;确保用户账户安全。 退出登录功能虽然相对简单…

【应急响应工具教程】Unix/Linux 轻量级工具集Busybox

1、工具简介BusyBox 是一个将常用 Unix/Linux 工具打包在单一可执行文件中的轻量级工具集&#xff0c;被称为 “嵌入式 Linux 的瑞士军刀”。 它将多个精简版的命令行工具&#xff08;如 ls、cat、cp、mv、grep 等&#xff09;集成到一个二进制文件中&#xff0c;并通过不同的调…

【React】案例:B站评论

目录 一、核心功能实现 二、id处理和时间处理 三、清空内容并重新聚焦 一、核心功能实现 1.获取评论内容&#xff1a;表单受控绑定 2.点击发布按钮发布评论 二、id处理和时间处理 1.rpid要求一个唯一的随机数id -uuid库 npm install uuid 使用方法&#xff1a;import {v4 as…

sqlite创建数据库,创建表,插入数据,查询数据的C++ demo

sqlite的API可参考&#xff1a;SQLite – C/C | 菜鸟教程 sqlite的官网API可参考&#xff1a;Introduction #include <iostream> #include <sqlite3.h> #include <string>// 回调函数&#xff0c;用于查询结果的输出 static int callback(void* data, int …

部分CSS笔试题讲解

1. box-sizing: border-box 的作用问题&#xff1a; 默认的 CSS 盒模型 (content-box) 中&#xff0c;元素的 width 和 height 属性只指定了内容区域的尺寸。如果你给元素添加了 padding 或 border&#xff0c;这些值会被加在 width/height 之上&#xff0c;导致元素的实际占用…

雅菲奥朗SRE知识墙分享(二):『SRE对智能运维的升级模型』

SRE深度结合AI创新&#xff0c;雅菲奥朗专家刘峰老师总结了近期人工智能运维领域的突破&#xff0c;合计以下15个关键点:一、领域1&#xff1a;Dev&Ops 深度融合• 关键点1. 组织&#xff1a;Google “SREScale” 最新论文提出「单一故障域 单一 SRE 小组」原则&#xff0…

前端 Promise 全面深入解析

一、Promise基础概念 1、什么是Promise? Promise是一个表示异步操作最终完成或失败的对象。它允许你为异步操作的成功结果和失败原因分别绑定相应的处理方法。 2、Promise的三种状态 pending(等待中): 初始状态,既不是成功,也不是失败 fulfilled(已成功): 操作成功完…

【LIN】2.LIN总线通信机制深度解析:主从架构、五种帧类型与动态调度策略

参考文章&#xff1a; Lin总线通信在STM32作为主机代码以及从机程序 基于STM32的LIN总线的实现 STM32F0-LIN总线通讯程序代码 主从调试OK LIN协议通信DEMO及源码剖析 前文已讲解关于LIN帧代码如何实现&#xff1a;【LIN】1.LIN通信实战&#xff1a;帧收发全流程代码实现 帧类型…

Maven的概念与Maven项目的创建

MavenMaven的概念依赖管理项目构建Maven安装Maven项目的创建Maven的第一个项目Maven的第二个项目Maven的概念 Maven 是 Apache 基金会推出的跨平台的项目管理工具&#xff0c;主要服务于基于Java平台的项目构建、依赖管理和项目信息管理&#xff0c;目前是 Java 生态中最主流的…

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一、初步了解binlog MySQL的二进制日志…

windows安装Elasticsearch,ik分词器,kibana可视化工具

安装地址 elasticsearch安装地址: Past Releases of Elastic Stack Software | Elastic 分词器下载地址: https://github.com/infinilabs/analysis-ik?tabreadme-ov-file kibana下载地址: Past Releases of Elastic Stack Software | Elastic 注意&#xff1a;版本一定要统…

GaussDB 数据库架构师修炼(十八)SQL引擎-SQL执行流程

1 SQL执行流程查询解析&#xff1a;词法分析、语法分析、 语义分析 查询重写&#xff1a;视图和规则展开、基于规则的查询优化 计划生成&#xff1a;路径搜索和枚举、选出最优执行计划 查询执行&#xff1a;基于优化器生成的物理执行计划对数据进行获取和计算2 解析器和优化器S…

能源管理系统中的物联网数据采集:深度探索与操作指南

一、引言物联网&#xff08;Internet of Things, IoT&#xff09;作为数字化时代的核心基础设施&#xff0c;通过将物理世界的设备、物体与网络连接&#xff0c;实现数据的实时感知与交互。而数据采集作为物联网系统的 “神经末梢”&#xff0c;是整个体系运行的基础。本文将从…

Java实现一个简单的LRU缓存对象

LRU&#xff08;Least Recently Used&#xff09;算法的核心思想是&#xff1a;最近使用的数据将被保留&#xff0c;最久未使用的数据将被淘汰。这种策略适用于内存有限、但又需要高频访问的数据场景&#xff0c;比如缓存系统、页面置换算法等。mysql的缓冲池就是使用的LUR Inn…