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

简介: 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));
相关文章
|
22天前
|
小程序 前端开发 算法
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
641 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
79 0
|
2月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
3月前
|
移动开发 小程序 前端开发
|
3月前
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
|
3月前
|
小程序 前端开发
微信小程序商城,微信小程序微店 【毕业设计参考项目】
文章推荐了一个微信小程序商城项目作为毕业设计参考,该项目在Github上获得18.2k星,提供了详细的使用教程和前端页面实现,适合学习微信小程序开发和作为毕业设计项目。
微信小程序商城,微信小程序微店 【毕业设计参考项目】
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
546 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
661 1
|
1月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
116 7