加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

uni-app微信小程序接入人脸核身SDK

发布时间:2020-12-14 19:12:35 所属栏目:资源 来源:网络整理
导读:这几天使用uni-app开发某银行的一个微信小程序,需要集成接入腾讯云的人脸核身SDK,如上图所示,记录下整合接入过程及踩的一些坑,帮助后面需要的朋友们。关于uni-app接入人脸核身SDK有不懂的地方可以在下面提问,看到会及时回复。 申请服务 不是所有的企业

这几天使用uni-app开发某银行的一个微信小程序,需要集成接入腾讯云的人脸核身SDK,如上图所示,记录下整合接入过程及踩的一些坑,帮助后面需要的朋友们。关于uni-app接入人脸核身SDK有不懂的地方可以在下面提问,看到会及时回复。

申请服务

不是所有的企业都能够申请的,需要符合以下行业要求的客户才能申请

政务:政府机构或事业单位

金融:银行、保险

医疗:公立医疗机构

运营商:电信运营商

教育:公立教育机构

交通:航空、客运、网约车、交通卡、共享交通、轨道交通、租车

旅游:酒店

物流:快递、邮政、物流

由于SDK会调用小程序原生的?wx.startFacialRecognitionVerify?方法,所以总共得申请2个服务

SDK服务:?申请人脸核身服务

小程序:?查看申请流程?(需要发送邮件申请,使用该服务的小程序的appid,后面开发也是用的这个)

重要的事情说3遍

以上这2个服务都需要申请,缺一不可。

以上这2个服务都需要申请,缺一不可。

下载SDK

由于不是我申请的,所以怎么下载我也不知道,听群里的人说的是SDK腾讯云下发给客户的。

SDK目录结构

SDK接入

参考腾讯云文档的接入方法:?https://cloud.tencent.com/document/product/1007/31071

文档是针对原生小程序写的,所以页面引入的方法有所不同

由于uni-app不支持直接引入小程序的原生页面,所以这里能想到的就是将它当作成一个微信小程序的组件,然后uni-app的页面引入这个组件

解压引入SDK

在uni-app项目中新建?wxcomponents?目录,将SDK解压后放到该目录

pages.json?中?globalStyle?中全局引入小程序的组件,注意引用的路径

"usingComponents": {
  "verify-mpsdk": "/wxcomponents/verify_mpsdk/index/index"
}

新建人脸核身页面

pages?中新建人脸核身的页面?face?(名字可以随意,根据自己的需要起名),

pages.json?中配置页面

face?页面中引入?verify-mpsdk?组件

最终的人脸核身的页面访问就是?/pages/face/face

初始化SDK

在需要的页面初始化SDK,如有个页面需要点击按钮进行人脸核身,就在这个页面进行初始化。

这个直接照着文档?快速入门?中的来就行了,这里就直接使用uni-app默认的?index?页面,

适当修改下即可,大概代码如下:

<template>
  <view class="content">
    <button type="primary"
      @tap="gotoVerify">
      进入人脸核身
    </button>
  </view>
</template>

<script>
    export default {
        data() {
            return {
                BizToken: ''
            }
        },onLoad() {
            // 初始化慧眼实名核身组件
            const Verify = require('@/wxcomponents/verify_mpsdk/main.js')
            Verify.init()
        },methods: {
            // 单击进入人脸核身按钮时,触发该函数
            gotoVerify () {
                this.BizToken = '' // 这里需要我们去客户后端调用DetectAuth接口获取BizToken
                // 调用实名核身功能
                wx.startVerify({
                        data: {
                            token: this.BizToken // BizToken
                        },success: (res) => { // 验证成功后触发
                                // res 包含验证成功的token,这里需要加500ms延时,防止iOS下不执行后面的逻辑
                                setTimeout(() => {
                                    // 验证成功后,拿到token后的逻辑处理,具体以客户自身逻辑为准
                                    console.log(res)
                                },500)
                        },fail: (err) => {  // 验证失败时触发
                                // err 包含错误码,错误信息,弹窗提示错误
                                setTimeout(() => {
                                        console.log(err)
                                        wx.showModal({
                                            title: "提示",content: err.ErrorMsg,showCancel: false
                                        })
                                },0);">500)
                        }
                })
            }
        }
    }
</script>

注意下这里的?BizToken?,需要调用后端服务接口来获取,

需要后端的同学调用腾讯云提供的?DetectAuth?来返回前端需要的?BizToken?,

调试开发阶段我们可以先通过腾讯云提供的工具

API 3.0 Explorer

直接来获取这个?BizToken?
如果服务申请成功后控制台一般能找到?SecretId?,?SecretKey?,?RuleId?

注意?Endpoint?和?Region?选择的地区得保持和申请时选择的地区一致。

填写完成后点击?在线调用?中的?发送请求?按钮,如果填的都对的话返回信息里面会有?BizToken?

拿到?BizToken?后就可以直接使用了,修改下上面的代码:

xxxxxxxxxxxxxxxxx就是拿到的?BizToken

'xxxxxxxxxxxxxxxxx' // 这里需要我们去客户后端调用DetectAuth接口获取BizToken

开发调试

上面都做完后就可以进行调试了

需要先在项目中?manifest.json?中配置上小程序的appid,这个appid就是上面?申请服务?中的appid,不然无法开启调试。

然后运行到微信开发工具(这里就不多说了),如果提示不是开发人员,就让该appid的管理员将你加到开发组里面就行了。

运行成功后点击开发者工具的真机调试,扫描二维码开启真机调试模式。

接下来就是踩坑了,会出现各种问题。

踩坑及解决方法

Component is not found in path

这里开发者工具里面都是显示正常的,不会报这个错,

手机扫码进入调试后控制台会出现这个报错,

提示组件找不到,但是我们的路径都是对的,

Component is not found in path "wxcomponents/verify_mpsdk/index/index"?

问题出在这里将?verify_mpsdk?当成自定义组件了,

小程序自定义组件引入的时候需要在文件JSON中指定?"component": true?

找到?wxcomponentsverify_mpsdkindexindex.json?文件,加入?"component": true?即可

重新开启调试扫码后上面的报错就没了。?

navigateTo:fail page

点击按钮调用?gotoVerify?后会报一个页面找不到的错

navigateTo:fail page "verify_mpsdk/index/index?isNotice=false" is not found?

SDK默认的是跳转验证页面的地址是?verify_mpsdk/index/index?,

文档找了半天也没找到相应的配置地址,最后在SDK里面搜索找到了这个地址。

所以只需要把这个地址改成我们所需要的地址就行了。

找到?wxcomponentsverify_mpsdkmain.js?,里面搜索?verify_mpsdk/index/index?,

找到后修改成上面?人脸核身页面?的地址?pages/face/face?

保存后重试就能跳转到人脸核身的页面了。

无操作、无报错大坑

进入人脸核身的页面后会发现啥操作都没,控制台也没报错,

一度认为我自己弄的有问题,搞了好久也没弄好,也提了个工单(腾讯云工单反馈率还是很快的,几分钟后就有人回复了,这点赞一个),

将代码和相关操作在工单里描述了下,对方也觉得的没问题,按照快速入门的代码应该是没问题的,对方也没找到啥问题,就让我加了一个腾讯云慧眼小助手的微信,

本想着下午加人家看看啥问题的,中午吃完饭闲着的时候将SDK里面的文件都格式化后终于在?index.js?里面找到问题所在了。

wxcomponentsverify_mpsdkindexindex.js?文件中有个?onLoad?生命周期,

正常原生微信小程序进入到这个页面的时候会执行?onLoad?里面的代码,

但是我们上面将这个SDK当作是一个自定义组件了,

在uni-app中组件是不存在?onLoad?这个生命周期的,这个是页面所属的生命周期。

找到问题所在就好解决了,我们可以在人脸核身的页面?pages/face/face?手动执行?onLoad?

修改下?pages/face/face?的代码,如下:

保存后重试,就能正常显示了

SDK图片异常

点击快速验证进入下一步及后面的步骤的时候发现,页面的图片都挂掉了不显示,

一开始我一直用的真机调试,页面上也不会出现破图,控制台也不会报图片异常的错误,

导致我不知道怎么进行拍摄身份证,以为会自动识别身份证然后自动下一步,

最后在开发者工具里面跑了一遍才知道是图片找不到了,然后拍照的图片按钮自然也就显示不了了。

最后在SDK里面搜索?/verify_mpsdk/images?,在下面文件中找到关键词,

wxcomponentsverify_mpsdktemplatesocrocr.wxml?

既然这种形式导致运行的时候图片找不到,我们可以把SDK所用的图片都复制到项目的?static目录里

在?static?中新建?verify_mpsdk?目录,将SDK中的图片即?wxcomponentsverify_mpsdkimages?

复制到?staticverify_mpsdk?中,最终形成以下目录形式

最后将?wxcomponentsverify_mpsdktemplatesocrocr.wxml?中的?/verify_mpsdk/images?批量替换成

/static/verify_mpsdk/images?后重试即可,然后就都正常了。

完整流程

最后用真机调试完整跑一把

备注:如果最上面的?wx.startFacialRecognitionVerify?服务没有申请到此时点击下一步的会弹出一个无权限的弹窗无法进行下一步

这里就是活体人脸检测了,需要将脸对准框框,点击开始后需要读几个数字,

最后验证通过后会回到之前的页面(调用gotoVerify()方法的页面),

验证成功后,会拿到一个?BizToken?,

可以在?wx.startVerify?回调函数?success?中打印自行查看。

拿到?BizToken?后可以调用后端的接口,后端通过调用??GetDetectInfo?接口获取并返回本次核身的详细信息,包括身份证上的信息和身份证证图片等信息。

前端拿到这些信息后根据自己的程序需要做处理。

结语

整合过程中遇到不少问题,百度加google也找不到相关的详细信息,

人脸核身的相关文档都很简单,出现问题后无从下手,只能慢慢自己摸索解决了,

最后写篇文章记录下整个过程,也能帮到后面需要集成这个SDK的朋友们。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读