无需证书小程序接入人脸识别—E证通

前端 0 1162
01789034
01789034 LV2 关注 2021年10月28日 17:56 编辑

@TOC

前言

微信小程序自开发人脸识别,有很大的限制,主要在于公司资质。
有没有不用资质就接入人脸识别,有的,腾讯E证通,该服务目前只向已完成企业实名认证的腾讯云用户开放,使用E证通服务前需要您注册腾讯云账号并完成企业实名认证。

收费标准

E证通属于第三方插件,因此有收费,个人觉得价格适中吧
在这里插入图片描述

接入准备

先开通腾讯云 => 实名认证 => 开通E站通 => 下载前端包
他分别有小程序接入和H5接入,目前我使用的是小程序接入

小程序

1、 添加服务器域名白名单

做过小程序都知道,在微信公众平台里面新增服务器白名单

eid.faceid.qq.com

2、添加业务域名白名单

上面的地址,也放在业务白名单里

eid.faceid.qq.com

3、安装 SDK/小程序包

在 控制台商户 ID 列表页 可以下载E证通小程序 SDK。
SDK包内容如下
在这里插入图片描述

4、SDK 调用步骤即实操代码

4.1、初始化 SDK

  • 在 app.js 文件中引入初始化 SDK 的方法 initEid。
  • 在 App.js 的 onLaunch() 中加入相应代码,在 App.json 文件里添加E证通 SDK 页面。
  • 在 onLaunch 方法中调用 initEid。
//app.js
    import { initEid } from './mp_ecard_sdk/main';

    App({
        onLaunch() {
            initEid();
        },
    });

    // app.json
    {
        "pages":[
            "mp_ecard_sdk/index/index",
            "mp_ecard_sdk/protocol/service/index",
            "mp_ecard_sdk/protocol/privacy/index",
            "mp_ecard_sdk/protocol/userAccredit/index",
            "mp_ecard_sdk/protocol/eid/index",
        ]
    }

4.2、 调用 SDK

  • 在需要进行核身的地方引入调用 SDK 的方法 startEid。
  • 在业务需要的时机触发 startEid。
import { startEid } from './mp_ecard_sdk/main';

    // 示例方法
    goSDK(token) {
        startEid({
            data: {
                token,
            },
            verifyDoneCallback(res) {  
                const { token, verifyDone } = res;
                console.log('收到核身完成的res:', res);
                console.log('核身的token是:', token); 
                console.log('是否完成核身:', verifyDone);          
            },
        });
    },

5、拿到回调结果

// app.js
onShow: (options) => {    
    const { referrerInfo, scene } = options;
    /* 判断是否从eID数字身份小程序返回 */
    const { appId } = referrerInfo;
    if (scene === 1038 && appId === 'wx0e2cb0b052a91c92') {
        console.log(referrerInfo.extraData.token,"人脸回调的token")
        let resutl,editoken
        if(referrerInfo.extraData.token){
            //人脸识别成功
            resutl = 'SUCCESS'
            editoken = referrerInfo.extraData.token
        }else{
            //失败
            resutl = 'FAIL'
            editoken = ''
        }
        //不知道为什么不触发
        // uni.navigateTo({
        //     url:`/pages/book/registerSuccess?token=${editoken}&resutl=${resutl}`,
        // })
        store.commit('SET_FACEINFO', {editoken,resutl})
        console.log("跳转")

        return
    } else {
        // 执行接入方小程序原本的逻辑
    }
    console.log('App Show')
},

6、使用uni-app开发

E证通目前没有接入uni,因此我们使用uni-app开发时,只能转换一下思路了,目前有两种实现方式

6.1、小程序运行后,在小程序中丢入sdk包

在小程序运行后,我们在微信开发者工具中,找到资源管理器,在根目录中丢入SDK包
在这里插入图片描述

缺点:无法git或者svn管理

6.2、把sdk包转换成uni-app代码

通过查看sdk包,我们可以清楚的发现他就微信小程序的一些页面和js,
我是通过miniprogram-to-uniapp来把原生小程序转换成uni-app代码包
转换效果如下:
在这里插入图片描述

缺点:转换后,uni不支持小程序的一些原生方法,导致需要人工转换,比如this.setData(),此方法在uni-app中就不支持

7、效果

在这里插入图片描述

在这里插入图片描述

赞(0) 收藏(0)  分享
相关标签:
0个回复
  • 消灭零回复
Vaptcha启动中...