首页 > 编程语言 >微信小程序识别身份证 (一)

微信小程序识别身份证 (一)

时间:2024-06-20 19:31:10浏览次数:28  
标签:console 微信 AppSecret token 身份证 error 识别 data

方法介绍 : 通过调用接口的方式进行实现 原生微信小程序识别身份证
官方文档 : 身份证识别获取接口调用凭据

实现步骤如下 :

1. 首先要在微信的 app.json 下面配置允许访问相机

  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    },
    "scope.camera": {
      "desc": "你的相机权限将用于扫码和拍照"
    }
  },

2. index.wxml

<view>
  <button bindtap='chooseImageOrPhotograph'>
    扫身份证
  </button>
</view>

3. index.ts

 chooseImageOrPhotograph() {
      const that = this
      wx.chooseImage({
        count: 1,
        // sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        // sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success(e) {
          console.log(e.tempFilePaths[0])
          that.setData({
            imageSrc: e.tempFilePaths[0]
          })
          wx.request({
            url: "https://api.weixin.qq.com/cgi-bin/token",
            data: {
              grant_type: "client_credential",
              appid: "wxe65af8ece0b29ec7",
              secret: "855bda7dce3638d769a2140914dc1967"
            },
            success(res: any) {
              console.error("res", res)
              const access_token = res.data.access_token
              wx.uploadFile({
                url: `https://api.weixin.qq.com/cv/ocr/idcard?access_token=${access_token}`,
                filePath: that.data.imageSrc,
                name: 'img',
                success(uploadRes) {
                  console.error("uploadRes", uploadRes)
                  const data = JSON.parse(uploadRes.data)

                  console.error("data 返回的身份数据", data)
                  if (data.errcode === 0) {
                    console.error("调用成功 返回 可以在这个里面处理你想要处理的逻辑")
                  } else if (data.errcode === 45002) {
                    messageTip('none', '图片大小超出限制')
                  } else if (data.errcode === 101001) {
                    messageTip('none', '未正确识别身份证')
                  } else {
                    console.error("data.erroMsg", data.errmsg)
                    messageTip('none', data.errmsg)
                  }

                },
                fail(uploadErr) {
                  console.error("upload failed", uploadErr)
                }
              })
            },
            fail(tokenErr) {
              console.error("Token request failed", tokenErr);
            }
          })
        },
        fail(err) {
          console.error("Choose image failed", err);
        }
      })
    },

要注意的点 : 上面调用 https://api.weixin.qq.com/cgi-bin/token 小程序在编译时会报有敏感信息AppSecret 。在微信小程序开发过程中,AppSecret 是一个非常敏感的信息,不应该直接暴露在客户端代码中。这不仅是出于安全考虑,而且也是微信小程序的审核规范之一。在发布审核版本时,代码中包含敏感信息(如 AppSecret)是不会通过审核的

基于敏感信息AppSecret 有以下2种解决办法 :

1)调用使用服务器中转 ,客户端请求服务器接口,服务器处理微信 API 请求 。服务器保管 AppSecret : 将 AppSecret 安全地存储在服务器上,不在客户端代码中暴露
2)使用云函数 :微信小程序提供云开发功能,可以使用云函数处理涉及敏感信息的操作。云函数在微信的服务器上运行,安全性更高 。 没有用过(因为要收费。。。)
今日份分享就到这了 。。。 欢迎留言探讨技术

标签:console,微信,AppSecret,token,身份证,error,识别,data
From: https://blog.csdn.net/weixin_45733254/article/details/139839854

相关文章