今天刚好做项目的时候用到这块功能,黄啊码就直接上手了,奈何网上的教程各式各样,就是没有个直接可以抄的,啊码最烦说话说一半,今天就直接弄个给大家抄的。
当前通过获取session_key与encryptedData与iv进行解密获取手机号的方法已经不行了,只能通过点击按钮来实现获取微信用户的手机号
1:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code,然后把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。每个code有效期为5分钟,且只能消费一次。
注:getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。
代码如下:
wxss代码:
js代码:
2:后端PHP代码【此处我用的是tp5】根据传过来的动态令牌code去获取手机号
附带函数:
可能出现的错误:errcode“:47001
问题所在:
这里肯定是忘记用json_encode
除了这个问题,某些大聪明娃喜欢把
https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=”.$token
这里的access_token变成data里边的参数,这时候就出现了access_token过期的问题。
一切问题来源于没有好好看官方文档
因为你如果将access_token当做参数,接口就变成了用两次access_token,第一次木有问题,第二次就只能跟你说拜拜了(access_token过期或无效)。