微信小程序获取用户手机号码
编写日期 : 2022-10-21
写这篇文章原因
encryptedData解密内容,我对我的内容做了修改展示出来了
获取手机号码
我们获取手机号 先要获取小程序全局唯一后台接口调用凭据 access_token,然后拿着这个 access_token 和动态令牌code去获取手机号码,我分开介绍这两步:
获取access_token
请求路径
接口会返回access_token和 token凭证有效时间expires_in,单位:秒。目前是7200秒之内的值。
获取手机号码
链接:
这块看文档大概也就知道了 ,直接上全部的代码了
yaml
pom.xml
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.57</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.16</version> </dependency> <!-- 阿里fastjson包JSON转换--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
controller
注意:我这个Java代码里面抛出得异常是我自己定义得异常,你们在用的时候可以看你们自己得心情,爱咋搞都行,反正正常情况下不会出现异常得,除非小程序官方又又又改了接口😁😁😁
访问结果
对结果进行格式不变的胡乱内容修改后展示,我们的代码是将请求结果中的phoneNumber单独拿出来返回的,看前端咋说,他要啥就给啥
{ "errcode":0, "errmsg":"ok", "phone_info": { "phoneNumber":"15812341234", "watermark": { "appid":"vxsjkhakhdjka", "timestamp":827319823 }, "purePhoneNumber":"15812341234", "countryCode":"12" } }
获取unionid
本来我以为这个需求到这里就结束了,前端和我说他获取uid的代码明文暴露了小程序 appId和小程序 appSecret,这样不安全而且代码审核也过不了,所以还需要我再支持下接口,这个接口就比较简单了 Get请求直接拼接访问就行。
链接:
总结
在搞这个的时候,我还了解到了一个东西,就是在使用Shiro安全框架的时候,放行规则不能超过12个,不然这个安全框架会把你放行的接口也拦截,前面也不知道要配合前端写几个接口,我写一个放行一个,到写getUid接口的时候,我用Swagger文档进行测试的时候,这个文档的页面被拦截的,然后我简单的排查一下,我就猜这玩意是不是放行超过了限制,我一搜,哎,还真是,我就把login和这三个接口写到一个controller下面,一次性放行了,四换一😁😁