微信小程序获取用户手机号码

编写日期 : 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下面,一次性放行了,四换一😁😁
经验分享 程序员 微信小程序 职场和发展