微信小程序系列之-微信小程序授权登录

简介: java后端对微信小程序进行授权登录操作

微信登录的官方文档

由于我是后端开发人员 , 因此主要讲解的是后端操作

小程序端需要调用的接口

//  获取 临时登录凭证code ,并回传到开发者服务器。
wx.login() 

后端调用接口

微信换取sessionKey和openId和unionId的接口

java 代码如下 ,使用的json序列化工具为 jackson

@Getter@Setter@Schema(description="用户信息Dto")
@Slf4jpublicstaticclassWxRegisterLoginUserimplementsSerializable {
publicstaticlongREDIS_REPEAT_TIMEOUT=5;
publicstaticStringREDIS_REPEAT_KEY_PREFIX="redis_repeat_key_";
// 微信获取 sessionKey openId unionId 的后缀privatestaticStringWX_LOGIN_URL="/sns/jscode2session";
@SerialprivatestaticfinallongserialVersionUID=7658930891407547798L;
@Schema(description="用户唯一标识")
@JsonAlias("openid")
privateStringopenId;
@Schema(description="会话密钥")
@JsonAlias("session_key")
privateStringsessionKey;
@Schema(description="用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回")
@JsonAlias("unionid")
privateStringunionId;
@Schema(description="错误码")
@JsonAlias("errcode")
privateIntegererrCode;
@Schema(description="错误详情")
@JsonAlias("errmsg")
privateStringerrMsg;
publicstaticWxRegisterLoginUserinitByWxCode(Stringcode, StringwxUrl, StringwxAppid, StringwxSecret) {
StringbuilderUrl=UrlBuilder.of(wxUrl+WX_LOGIN_URL)
                    .addQuery("appid" , wxAppid)
                    .addQuery("secret" , wxSecret)
                    .addQuery("js_code", code)
                    .addQuery("grant_type" , "authorization_code")
                    .build();
log.info("BusUserDto-wxRegisterLogin-initByWxCode-builderUrl:{}" , builderUrl);
StringwxLoginStr=HttpUtil.get(builderUrl);
log.info("UserDomainServiceImpl-wxRegisterLogin-initByWxCode-wxLoginStr : {}", wxLoginStr);
// 登陆操作WxRegisterLoginUserregisterLoginDto=JacksonUtil.toObject(wxLoginStr, WxRegisterLoginUser.class);
Assert.isTrue(registerLoginDto.validateErrorCode(),
                    () ->newBusException(BusErrorCode.WX_REGISTER_LOGIN_INFO_ERROR.getResultCode(), registerLoginDto.getErrMsg()));
returnregisterLoginDto;
        }
publicBooleanvalidateErrorCode() {
// 微信官方文档 0 代表成功 https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.htmlif (StrUtil.isNotEmpty(openId)) {
returnBoolean.TRUE;
            }
returnBoolean.FALSE;
        }

这个时候就能够拿到openId或者unionId去本地数据库查询是否存在该用户了

// 是否注册过Assert.isNull(userService.getUserByOpenId(registerLoginDto.getOpenId()), () ->newBusException(BusErrorCode.WX_REGISTER_REPEAT_ERROR));
相关文章
|
3月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
3月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
7月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1542 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
7月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
707 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
9月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
1037 2
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
10月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
720 3
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
3184 7
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
2877 1
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2195 7
|
9月前
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
2796 11
技术小白如何利用DeepSeek半小时开发微信小程序?