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

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

微信小程序授权文档地址

小程序端使用唤醒授权

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

相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
633 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
726 1
|
2月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
54 1
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
83 6
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
225 1
|
2月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
804 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
417 0
|
2月前
|
小程序
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
605 0
|
2月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
101 0
|
3月前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
114 3