【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("没有权限,请登录");

       }

   }


}

相关文章
|
5月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
7月前
|
Java 计算机视觉
微信虚拟视频聊天插件,QQ抖音快手虚拟摄像头工具,替换相机视频流java
实现包含了虚拟摄像头核心功能,可以捕获真实摄像头视频流,处理后输出到虚拟摄像头设备。
|
8月前
|
数据可视化 机器人 Java
聊天软件自动回复脚本,微信抖音快手小红书,消息自动回复工具机器人【java】
包含4个完整模块:主逻辑模块实现核心回复功能,工具模块封装常用函数,UI模块提供可视化控制界面
|
11月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
9714 12
|
11月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
759 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
11月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
737 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
12月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
887 3
|
12月前
|
小程序
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
439 2
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
|
12月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1675 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
12月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
2545 5

热门文章

最新文章