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

       }

   }


}

相关文章
|
13天前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
133 12
|
3月前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
77 12
|
27天前
|
小程序 前端开发 关系型数据库
基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
校园圈子论坛及综合服务平台集成了校园跑腿、兼职信息、外卖团购、闲置交换、租赁服务、表白墙等多功能模块,提供一站式校园生活解决方案。系统采用uniapp前端和PHP后端开发,支持多城市、多学校切换,配备分站式后台管理,确保稳定性和安全性。通过融云IM SDK实现即时通讯功能,增强用户互动与粘性。适用于大学校园、城市及社区圈子,满足多样化需求,提升便捷体验。
|
1月前
|
移动开发 小程序 前端开发
超详细攻略!uniapp陪玩系统,打包陪玩小程序、H5需要注意什么?
陪玩系统的打包过程涵盖APP、小程序和H5平台。APP打包需使用uni-app开发工具,配置项目信息并选择云打包;小程序打包需在微信公众平台注册账号并提交审核;H5打包则直接通过uni-app生成文件并上传至服务器。各平台需注意权限配置、代码规范及充分测试,确保应用稳定性和兼容性。
|
30天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
27 0
|
3月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
82 0
在线课堂+工具组件小程序uniapp移动端源码
|
4月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
567 3
|
4月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
96 0
微信小程序更新提醒uniapp
|
6月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
155 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
6月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
157 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

热门文章

最新文章