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

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

微信小程序授权文档地址

小程序端使用唤醒授权

<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的时候要开始收费了 , 如果没有去购买 , 那么不能再前端唤醒授权按钮 , 但是不会提示欠费信息。看吧自己也知道这个事情不能告诉微信用户............

相关文章
|
6天前
|
人工智能 小程序 程序员
【视频测评 DEMO 参考】VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
104 7
|
13天前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
132 12
|
4月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
925 1
|
4月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
753 0
|
4月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
974 7
|
4月前
|
小程序
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
879 0
|
4月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
335 1
|
4月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
1728 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
8月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
5501 2
|
9月前
|
网络协议 安全 Linux
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器

热门文章

最新文章