【java】微信小程序登录,后端流程

简介: 微信小程序登录

微信小程序登录

1、前端请求

前端调用wx.login()获取临时授权码(凭证)code,然后返回给后端。

2、后端接收、调用

后端接收到前端返回的临时授权码(凭证)code之后,携带code、appid、appsecret访问微信api,微信api返回唯一登录凭证openid等信息。


登录api网址:

获取openid:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html

image.png

获取接口调用凭据AccessTokenhttps://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html

获取手机号:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html

3、储存、封装

后端拿到微信api返回的openid等信息,再使用openapi调用获取微信手机号、头像等信息封装到一起,储存到数据库中,以便登录校验,信息更新。

image.png

4、响应

后端将可开放数据负载进token,返回给前端。


使用jwt进行封装

// 将用户id存入token,返回

Map<String, Object> claims = new HashMap<>();

claims.put(Constants.JWT_USERID, member.getId());

claims.put(Constants.JWT_USERNAME, member.getName());

String token = JwtUtil.createJWT(jwtProperties.getBSecretKey(), jwtProperties.getTtl(), claims);

5、再请求

前端token过期或者退出登录后再次请求登录时,重复获取openid步骤,然后将获取到的openid与数据库的openid进行对比,没有一致的openid视为新用户注册,有一致的id则进行信息更新操作,然后封装token返回。



public class JwtUtil {

   /**
    * 生成jwt
    * 使用Hs256算法, 私匙使用固定秘钥
    *
    * @param secretKey  jwt秘钥
    * @param dateOffset jwt过期时间(小时)
    * @param claims     设置的信息
    * @return token
    */
   public static String createJWT(String secretKey, int dateOffset, Map<String, Object> claims) {

       // 指定签名的时候使用的签名算法,也就是header那部分
       SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;


       // 设置jwtbody
       JwtBuilder builder = Jwts.builder()

               // 如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builderclaim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的
               .setClaims(claims)

               // 设置签名使用的签名算法和签名使用的秘钥
               .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))

               // 设置过期时间
               .setExpiration(DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, dateOffset));


       return builder.compact();

   }


JwtUtils工具类(加密解密token)

   /**
    * Token解密
    *
    * @param secretKey jwt秘钥 此秘钥一定要保留好在服务端, 不能暴露出去, 否则sign就可以被伪造, 如果对接多个客户端建议改造成多个
    * @param token     加密后的token
    * @return claims
    */
   public static Claims parseJWT(String secretKey, String token) {

       try {

           // 得到DefaultJwtParser
           Claims claims = Jwts.parser()

                   // 设置签名的秘钥
                   .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))

                   // 设置需要解析的jwt
                   .parseClaimsJws(token).getBody();

           return claims;

       } catch (Exception e) {

           throw new RuntimeException("没有权限,请登录");

       }

   }


}

相关文章
|
6月前
|
数据可视化 机器人 Java
聊天软件自动回复脚本,微信抖音快手小红书,消息自动回复工具机器人【java】
包含4个完整模块:主逻辑模块实现核心回复功能,工具模块封装常用函数,UI模块提供可视化控制界面
|
3月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
204 5
|
3月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
5月前
|
Java 计算机视觉
微信虚拟视频聊天插件,QQ抖音快手虚拟摄像头工具,替换相机视频流java
实现包含了虚拟摄像头核心功能,可以捕获真实摄像头视频流,处理后输出到虚拟摄像头设备。
|
8月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
791 12
|
8月前
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
9月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
4809 11
|
10月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1176 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
10月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3005 12
|
10月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1904 5

热门文章

最新文章