微信小程序UserInfo与百度云人脸检测请求参数user_id的一个小问题

微信小程序UserInfo中的nickName

百度云人脸检测API中请求参数user_id

以上两者不得不说的秘密

  • 各位大佬好,小弟渣新(又渣又新),正在毕设阶段挣扎。小程序调用百度云的人脸识别,这不是刚刚码好注册和搜索的两个功能,一运行就出了n多bug。于是进入就debug的阶段,然后就是复制、浏览器、搜索、第一个、看不懂、关闭、第二个…一气呵成的切屏操作,啥也解决不了。
  • 以上都是废话,主要是告诉大家,楼主新人,正在学习前端,不接受劝退。也是想借着这个机会,开始记录自己的学习过程,也欢迎新人一起学习,更欢迎大佬指导。反正不懂就问。
  • 话不多说,先上小程序的console
    在这里插入图片描述
  • 各位客官老爷肯定一眼就知道哪里出了问题,更别说我这刚刚开始学习的渣新。不废话,接着贴一下百度云官方文档给出的错误码——(附上链接)百度云人脸识别错误码
    微信小程序UserInfo与百度云人脸检测请求参数user_id的一个小问题_第1张图片
  • 到这里呀,这不就是数据类型的问题吗,嘿,你别说还真是类型的问题。大家别急,接下来我们看一下百度云对于人脸注册API的一些参数设定。(附上链接)百度云人脸库管理(包含注册)
    微信小程序UserInfo与百度云人脸检测请求参数user_id的一个小问题_第2张图片
  • 注意上面的user_id的类型string,不过是有数字、字母、下划线组成的string!
  • 下面上一下自己的代码,页面的初始数据。
data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    nickName:"",
    src:"",
    token:"",
    base64:"",
    msg:""
  },
  • 下面是调用人脸注册api的代码,我这里将获取用户的nickName也就是昵称,作为user_id(用户组里的uid)
wx.request({
      url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + this.data.token,
      method: 'POST',
      data: {
        image: this.data.base64,
        image_type: 'BASE64',
        group_id: '***', //自己的组id
        user_id: this.data.nickName //注意这里的nickName
      },
      header: {
        'Content-Type': 'application/json'
      },
      success(res) {
        that.setData({
          msg: res.data.error_msg
        })
        console.log(that.data.msg)
        if(that.data.msg == 'SUCCESS') {
          wx.showToast({
            title: '注册成功',
            icon: 'success',
            duration: 2000
          })
          wx.switchTab({
            url: '../UI/ui',
          })
        }
      }
    }),
  • 然后我们看一下微信官方文档中UserInfo的一些设定(附上链接)微信小程序UserInfo
    微信小程序UserInfo与百度云人脸检测请求参数user_id的一个小问题_第3张图片
  • 微信小程序在这里对nickName的类型定义是string。而百度云对user_id的定义同样也是string,不过还要求只能有数字、字母和下划线,这就导致了我在做的时候,用getUserInfo获取用户信息,并用昵称作为user_id,而我的微信正是中文昵称,这就是导致user_id参数错误的原因。而且在我将微信昵称改为英文就可以使用nickName作为uid了。
    文章只是个人用来记录学习过程,如果对同样正在新手学习阶段的你有用,请随手点赞

你可能感兴趣的:(微信小程序UserInfo与百度云人脸检测请求参数user_id的一个小问题)