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

简介: 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));
相关文章
|
5天前
|
小程序 开发者
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
这篇文章介绍了微信小程序的初始化过程,包括如何注册微信小程序账号、下载微信小程序开发者平台,并指导了新建小程序的详细步骤。
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
|
6天前
|
存储 小程序 JavaScript
|
6天前
|
开发工具 Android开发
|
6天前
|
存储 前端开发 安全
|
6天前
|
存储 前端开发 Java
|
2天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录是一个重要而复杂的问题。
微信小程序作为业务拓展的新渠道,其全栈开发涉及前端与后端的紧密配合。本文聚焦小程序开发中的异常处理与日志记录,从前端的网络、页面跳转等异常,到后端的数据库、API调用等问题,详述了如何利用try-catch及日志框架进行有效管理。同时强调了集中式日志管理的重要性,并提醒开发者注意安全性、性能及团队协作等方面,以构建稳定可靠的小程序应用。
9 1
|
2天前
|
小程序 前端开发 API
微信小程序全栈开发中的多端适配与响应式布局是一种高效的开发模式。
探讨小程序全栈开发中的多端适配与响应式布局,旨在实现统一的用户体验。多端适配包括平台和设备适配,确保小程序能在不同环境稳定运行。响应式布局利用媒体查询和弹性布局技术,使界面适应各种屏幕尺寸。实践中需考虑兼容性、性能优化及用户体验,借助跨平台框架如Taro或uni-app可简化开发流程,提升效率。
8 1
|
8天前
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
15 0
微信小程序开发必备前置知识:基本代码构成与语法
|
17天前
|
人工智能 搜索推荐 安全
从零到一:微信机器人开发的实战心得
从零到一:微信机器人开发的实战心得
53 2