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

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

微信小程序授权文档地址

小程序端使用唤醒授权

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

相关文章
|
3月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
71 1
ly~
|
4月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
99 6
|
3月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
1480 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
3月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
118 0
|
3月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
51 0
|
4月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
5月前
|
移动开发 小程序 前端开发
|
12天前
|
移动开发 小程序 前端开发
超详细攻略!uniapp陪玩系统,打包陪玩小程序、H5需要注意什么?
陪玩系统的打包过程涵盖APP、小程序和H5平台。APP打包需使用uni-app开发工具,配置项目信息并选择云打包;小程序打包需在微信公众平台注册账号并提交审核;H5打包则直接通过uni-app生成文件并上传至服务器。各平台需注意权限配置、代码规范及充分测试,确保应用稳定性和兼容性。
|
2月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
54 0
在线课堂+工具组件小程序uniapp移动端源码
|
3月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
457 3