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

简介: 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));
相关文章
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
546 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
660 1
|
22天前
|
小程序 前端开发 算法
|
1月前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
208 1
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
641 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
363 0
|
1月前
|
小程序
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
uni-app开发微信小程序使用onPullDownRefresh(下拉刷新)总结
539 0
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
79 0
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
241 3
下一篇
无影云桌面