• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php微信小程序获取用户信息(手机号码)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

小程序确实很简单。解决这个问题时候,忽略了官方文档的一句话,耗费了好几个小时的时间。

所以,找不出错误的时候,多看官方文档!

官方文档很重要 ! 就是忽略了这句话:获取微信用户绑定的手机号,需先调用wx.login接口。

传递给php的参数(code , iv,encryptData)都是正确的,sessionKey也没有问题,引用的文件都是官方下载的。

可就是解密失败,返回-41003(aes 解密失败),(奇怪的是,用微信官方demo的 appid,sessionKey, encrypt, iv,即使没有登录状态,也可以解密成功。)

正确的代码是:

在onLoad函数中(获取微信用户绑定的手机号,需先调用wx.login接口,进入登录状态):

  wx.login({
      success (res) {
        that.setData({
          code:res.code
        })
        if (res.code) {
          //发起网络请求
          wx.request({
            url: \'自己的url\'+res.code,
            success(res){
              console.log("request成功")
            },
            fail(res){
              console.log("request失败")
            }
          })
        } else {
          console.log(\'登录失败!\' + res.errMsg)
        }
      }
    })

在获取用户手机号的按钮,绑定一个函数例如(还要调用一次wx.login,code只能用一次):

//获取用户手机号

//获取用户手机号
getPhoneNumber:function(e){
  var that = this;
console.log("正在获取 敏感加密数据 手机号")
//这是两个 需要发送给 php的参数,还需要 发送  wx.login产生的code,需要一次发送
console.log("iv 是:",e.detail.iv)
console.log("encryptedData 是:",e.detail.encryptedData)
var encryptedData = encodeURIComponent(e.detail.encryptedData);//一定要把加密串转成URI编码
 
wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      //发起网络请求
      wx.request({
        url: \'自己的url\',
    
        success:function(res){
          console.log("获取用户手机号:wx.login中request成功",res)
        },
        fail:function(res){
          console.log("获取用户手机号,请求失败!")
        }
      })
    } else {
      console.log(\'登录失败!\' + res.errMsg)
    }
  }
})     
},

 

常见错误:

1、解密的时候,报错:iv 应该是16个 byte,不应该是15个byte,说明数据传输时,iv 中的 + 自动转换成了 " "(空格)。

在 php接收 iv 后,将 iv 中 的空格替换为加号 即可。

/**
     * 请求过程中因为编码原因+号变成了空格
     * 需要用下面的方法转换回来
     */
    function define_str_replace($_data)
    {
        return str_replace(\' \',\'+\',$_data);
    }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序 获取用户openid发布时间:2022-07-18
下一篇:
微信小程序实现获得用户手机号发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap