微信小程序系列之-微信小程序授权-获取手机号码

简介: 微信小程序在用户授权之后去获取用户的手机号码

微信小程序授权文档地址

小程序端使用唤醒授权

<buttonopen-type="getPhoneNumber"bindgetphonenumber="getPhoneNumber"></button>Page({
getPhoneNumber (e) {
console.log(e.detail.code)  // 动态令牌console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)console.log(e.detail.errno)  // 错误码(失败时返回)  }
})

后端获取手机号码

后端和获取手机号码的文档

获取手机号码的代码如下

@Getter@Setter@Schema(description="PhoneNumber")
publicstaticclassPhoneNumberimplementsSerializable {
@SerialprivatestaticfinallongserialVersionUID=7658930891407547798L;
privatestaticfinalStringWX_GET_PHONE_NUMBER="/wxa/business/getuserphonenumber";
@Schema(description="错误码")
@JsonAlias("errcode")
privateIntegererrCode;
@Schema(description="错误详情")
@JsonAlias("errmsg")
privateStringerrMsg;
@Schema(description="手机号码")
@JsonAlias("phone_info")
privatePhoneInfopInfo;
@Getter@Setter@Schema(description="phone_info")
publicstaticclassPhoneInfoimplementsSerializable {
@SerialprivatestaticfinallongserialVersionUID=7658930891407547798L;
@Schema(description="用户绑定的手机号(国外手机号会有区号)")
privateStringphoneNumber;
@Schema(description="没有区号的手机号")
privateStringpurePhoneNumber;
@Schema(description="区号")
privateStringcountryCode;
            }
publicstaticOptional<String>getPhoneNumber(Stringurl , StringphoneCode , StringaccessToken) {
// UrlBuilder 是hutool的一个工具类StringbuildUrl=UrlBuilder.of(url+WX_GET_PHONE_NUMBER)
                        .addQuery("access_token", accessToken).build();
log.info("BusUserDto-WxRegisterLoginUser-PhoneNumber-getPhoneNumber-buildUrl :{}" , buildUrl);
Stringstr=HttpUtil.post(buildUrl, Map.of("code", phoneCode));
log.info("BusUserDto-WxRegisterLoginUser-PhoneNumber-getPhoneNumber-str :{}" , str);
PhoneNumberphoneNumber=JacksonUtil.toObject(str, PhoneNumber.class);
PhoneInfoinfo=phoneNumber.getPInfo();
if (ObjectUtil.isNull(info)){
returnOptional.empty();
                }
returnOptional.of(info.getPhoneNumber());
            }
        }

获取accessToken

获取accessToken微信文档

java 代码

@Getter@Setter@Schema(description="AccessToken")
publicstaticclassAccessTokenimplementsSerializable {
//微信access缓存keyprivatestaticfinalStringWX_ACCESS_TOKEN_CACHE="wx_access_token_cache_";
// 缓存过期时间 官方 7200sprivatestaticfinalLongCACHE_TIME_OUT=7100L;
// 获取accessToken的链接后缀privatestaticStringWX_ACCESS_TOKEN_URL="/cgi-bin/token";
@SerialprivatestaticfinallongserialVersionUID=7658930891407547798L;
@Schema(description="access_token")
@JsonAlias("access_token")
privateStringaccessToken;
@Schema(description="过期时间 默认7200s")
@JsonAlias("expires_in")
privateStringexpiresIn;
@Schema(description="错误码")
@JsonAlias("errcode")
privateIntegererrCode;
@Schema(description="错误详情")
@JsonAlias("errmsg")
privateStringerrMsg;
publicstaticStringgetAccessToken(Stringurl , Stringappid , Stringsecret) {
StringaccessToken=RedisUtils.get(WX_ACCESS_TOKEN_CACHE);
if (StrUtil.isNotEmpty(accessToken)){
returnaccessToken;
                }
StringbuildUrl=UrlBuilder.of(url+WX_ACCESS_TOKEN_URL)
                        .addQuery("grant_type", "client_credential")
                        .addQuery("appid", appid)
                        .addQuery("secret", secret).build();
log.info("BusUserDto-WxRegisterLoginUser-getAccessToken-buildUrl:{}" , buildUrl);
Stringstr=HttpUtil.get(buildUrl);
log.info("BusUserDto-WxRegisterLoginUser-getAccessToken-str :{}" , str);
AccessTokentoObject=JacksonUtil.toObject(str, AccessToken.class);
// 放到redis中设置过期时间,单位为秒(s)RedisUtils.set(WX_ACCESS_TOKEN_CACHE , toObject.getAccessToken(), CACHE_TIME_OUT , TimeUnit.SECONDS);
returntoObject.getAccessToken();
            }
        }

最后吐槽一句

微信获取用户手机号码在2023-08-26的时候要开始收费了 , 如果没有去购买 , 那么不能再前端唤醒授权按钮 , 但是不会提示欠费信息。看吧自己也知道这个事情不能告诉微信用户............

相关文章
|
5天前
|
存储 小程序 前端开发
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
12 0
|
13天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的微信食堂线上订餐小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的微信食堂线上订餐小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
18天前
|
小程序 前端开发 JavaScript
微信外卖小程序
微信外卖小程序
|
11天前
|
小程序 前端开发 Android开发
Android企业微信分享到小程序
Android企业微信分享到小程序
14 0
|
13天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp的微信小程序评分小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的微信小程序评分小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
2月前
|
小程序 API 数据安全/隐私保护
微信小程序开发中的一些常用标签
这些标签是微信小程序开发中的基础,开发者可以根据需要组合使用这些标签来构建小程序的界面。每个标签都有其属性和事件,可以通过属性来调整组件的样式和行为,通过事件来响应用户的操作。
67 5
|
26天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的智慧旅游平台开发微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的智慧旅游平台开发微信小程序的详细设计和实现
40 8
|
5天前
|
存储 JSON 测试技术
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
4 0
|
5天前
|
XML 小程序 前端开发
技术心得记录:微信小程序开发的基本流程
技术心得记录:微信小程序开发的基本流程
|
5天前
|
容器
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
4 0