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

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

微信小程序授权文档地址

小程序端使用唤醒授权

<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月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
3月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
7月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1545 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
7月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
707 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
9月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
1037 2
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
10月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
720 3
|
3月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
4月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
204 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
10月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
3184 7