微信公众平台扫码登录:Spring Boot与JustAuth的完美结合

news2024/11/15 18:44:46

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

微信公众平台扫码登录:Spring Boot与JustAuth的完美结合

    • 前言
    • 前提
    • 什么是JustAuth
      • JustAuth 的特点
      • JustAuth 支持的第三方平台
    • 逻辑图
    • 项目实现
      • maven实现
      • 配置文件实现
      • 创建配置类
      • controller
      • 常用方法解释

前言

在如今的数字化时代,用户体验至关重要。微信作为中国最大的社交平台之一,其扫码登录功能为用户提供了便捷且安全的登录方式。作为开发者,我们可以通过JustAuth和Spring Boot轻松实现这一功能,为我们的应用带来更好的用户体验。接下来,让我们一起探索这条便捷之路,轻松实现微信扫码登录。

前提

注意📢:使用此方式进行扫码登录的前提是注册了微信公众平台(企业)

springboot整合微信(公众号)实现扫码登录(两种方式,两种实现)

什么是JustAuth

JustAuth 是一个开源的第三方登录授权 SDK,用于简化和统一多个第三方平台(如微博、微信、GitHub、Google 等)的 OAuth 2.0 授权登录流程。它旨在通过提供一致的 API 和便捷的集成方式,使开发者能够快速实现多平台的第三方登录功能。

JustAuth官网

JustAuth 的特点

  1. 支持多平台:JustAuth 支持常见的社交平台和一些开发者平台的 OAuth 2.0 授权登录,包括但不限于微博、微信、QQ、GitHub、Google、Facebook、Twitter 等。

  2. 统一接口:通过统一的接口,开发者可以方便地集成多个第三方平台的授权登录功能,无需针对不同平台编写不同的代码。

  3. 简单易用:JustAuth 提供了简洁明了的 API,使得第三方登录的实现变得非常简单,只需几行代码即可完成集成。

  4. 开源免费:JustAuth 是一个开源项目,开发者可以免费使用和修改源代码,根据自己的需求进行定制化开发。

JustAuth 支持的第三方平台

JustAuth 支持的第三方平台包括但不限于:

  • GitHub
  • Google
  • Facebook
  • Twitter
  • 微博
  • 微信
  • QQ
  • 淘宝
  • 支付宝
  • 钉钉

逻辑图

image-20240627162356214

项目实现

下面代码仅为基础代码,需要考虑自身业务,比如登录前要绑定平台用户

maven实现

<dependency>
    <groupId>me.zhyd.oauth</groupId>
    <artifactId>JustAuth</artifactId>
    <version>1.4.0</version>
</dependency>

配置文件实现

justauth:
  wechat:
    client-id: your-wechat-appid
    client-secret: your-wechat-appsecret
    redirect-uri: http://your-domain.com/callback
# 这里有一个参数为ignoreCheckRedirectUri,设置为true

创建配置类

import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.request.AuthWeChatRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JustAuthConfig {

    @Value("${justauth.wechat.client-id}")
    private String clientId;

    @Value("${justauth.wechat.client-secret}")
    private String clientSecret;

    @Value("${justauth.wechat.redirect-uri}")
    private String redirectUri;

    @Bean
    public AuthWeChatRequest authWeChatRequest() {
        return new AuthWeChatRequest(AuthConfig.builder()
                .clientId(clientId)
                .clientSecret(clientSecret)
                .redirectUri(redirectUri)
                .build());
    }
}

controller

import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.request.AuthWeChatRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/oauth")
public class OAuthController {

    @Autowired
    private AuthWeChatRequest authWeChatRequest;

    @GetMapping("/wechat")
    public String renderAuth() {
        return "redirect:" + authWeChatRequest.authorize();
    }

    @RequestMapping("/callback")
    @ResponseBody
    public AuthResponse<AuthUser> login(AuthCallback callback) {
        return authWeChatRequest.login(callback);
    }
}

常用方法解释

// 返回微信用户信息
AuthResponse login = authWeChatRequest.login(authCallback);
AuthUser user = (AuthUser) login.getData();
// 用户详细信息
JSONObject rawUserInfo = user.getRawUserInfo();
// 获取openid
user.getUuid()
// 获取unionid
rawUserInfo.getString("unionid")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kali下安装使用蚁剑(AntSword)

目录 0x00 介绍0x01 安装0x02 使用1. 设置代理2. 请求头配置3. 编码器 0x00 介绍 蚁剑&#xff08;AntSword&#xff09;是一个webshell管理工具。 官方文档&#xff1a;https://www.yuque.com/antswordproject/antsword 0x01 安装 在kali中安装蚁剑&#xff0c;分为两部分&am…

python获取快手账号列表数据

快手数据获取相对简单访问地址固定且不需要登录token 列表地址获取的固定接口 https://www.kuaishou.com/graphql 发送post请求注意每个快手账号对应的id import time from datetime import datetime import logging import json import pymysql import requests# 创建一个lo…

vue3 【提效】自动导入框架方法 unplugin-auto-import 实用教程

是否还在为每次都需要导入框架方法而烦恼呢&#xff1f; // 每次都需手动导入框架方法 import { ref } from vuelet num ref(0)用 unplugin-auto-import 来帮你吧&#xff0c;以后只需这样写就行啦&#xff01; let num ref(0)官方示例如下图 使用流程 1. 安装 unplugin-au…

文物管理技术RFID技术

随着科技的不断发展&#xff0c;科技在各个领域都发挥着重要的作用。其中&#xff0c;在文物管理方面&#xff0c;RFID技术的应用正在逐渐引起人们的关注。RFID&#xff08;Radio Frequency Identification&#xff09;技术是一种通过无线电信号进行非接触式识别的技术&#xf…

【深度学习】Error: TensorBoard could not bind to port 6006 问题解决

问题描述 在启动TensorBoard时&#xff0c;遇到了端口冲突&#xff0c;如下图所示&#xff1a; 根据提示&#xff0c;出错原因是因为端口已经被占用了&#xff0c;因此我们要结束占用这个端口的进程。 我的系统是Windows系统&#xff0c;并不是Linux&#xff0c;网上大部分方…

基于springboot时装购物系统

设计技术&#xff1a; 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatisvue 工具&#xff1a;IDEA、Maven、Navicat 主要功能&#xff1a; 管理员&#xff1a;首页、个人中心、用户管理、商品分类管理、颜色管理、商品信息管理、商品评价…

以数治税时代来临,企业如何应对?

全电发票是数字经济时代发票的新形态&#xff0c;顺应了数字经济潮流。现如今&#xff0c;国家正全力推动行业数字化进程&#xff0c;预计&#xff0c;2025年将基本实现发票全领域、全环节、全要素电子化&#xff0c;实现税务执法、服务、监管与大数据智能化应用深度融合、高效…

数据库使用笔记

1.mysql数据库频繁访问导致连接超时 解决办法一&#xff1a; 优化查询&#xff1a;检查并优化SQL查询语句&#xff0c;减少不必要的数据库调用。增加连接池大小&#xff1a;如果应用程序使用连接池&#xff0c;可以考虑增加连接池的最大连接数。&#xff08;注&#xff1a;不能…

Profibus协议转Modbus协议网关模块在船舶中的应用

一、背景 在当今数字化快速发展的时代&#xff0c;船舶作为重要的交通工具之一&#xff0c;也在不断追赶着科技的步伐&#xff0c;实现自身的智能化升级。而在这个过程中&#xff0c;Profibus转Modbus网关&#xff08;XD-MDPB100&#xff09;作为关键的一环&#xff0c;扮演着…

主流先进封装技术介绍

主流先进封装技术介绍 先进封装是指封装集成电路 (IC) 以提高性能的多种创新技术。 本质上&#xff0c;就是将传统封装中被延缓的数据传输速度和被损耗的大量功耗&#xff0c;通过技术和结构的创新极大程度的找回。 1. FO 封装 FO封装包括三大类&#xff1a; 核心扇出型&a…

基于SpringBoot的藏区特产销售平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBoot框架 工具&#xff1a; MyEclipse 系统展示 首页 个人中心 特产信息管理 订单管…

CSS基础学习记录(6)

目录 1、从最基本的页面开始 2、添加图像/浮层部分 3、位置调整 4、添加动效 4.1、添加浮层动效 4.2、添加背景动画 根据前面css的学习&#xff0c;本篇来实践下前面学习的知识&#xff0c;主要实现如下这样的效果。 下面我们一步步实现上面的效果。 1、从最基本的页面开…

爬取必应关键字搜索结果url

上代码 import aiohttp import asyncio from lxml import etree import aiofiles import time import random aiohttp 和 asyncio 用于异步HTTP请求和事件循环。 lxml 用于解析HTML。 aiofiles 用于异步文件操作。 time 和 random 用于控制爬取速度。 headers {User-Agent: M…

智慧校园-缴费管理系统总体概述

在构建现代化教育环境的过程中&#xff0c;智慧校园缴费管理系统脱颖而出&#xff0c;成为提升校园财务管理效率与服务质量的关键一环。缴费管理系统需要精心设计&#xff0c;通过科技力量&#xff0c;让原本繁琐的缴费流程变得简单快捷&#xff0c;同时增强家校之间的互动与信…

gbase 8c分布式升级步骤

GBase 8c 多模多态企业级分布式数据库具备高性能、高可用、弹性伸缩、高安全性等特性&#xff0c;可以部署在物理机、虚拟机、容器、私有云和公有云&#xff0c;为关键行业核心系统、互联网业务系统和政企业务系统提供安全、稳定、可靠的数据存储和管理服务。GBase 8c支持行存、…

鸿蒙期末项目(4)

day4 页面的设计与编写基本完成&#xff0c;接下来使用我们之前搭建好的服务器与相关的网络接口将鸿蒙中的逻辑真正实现一下。 在实现购物车页面展示功能时&#xff0c;使用了如下代码&#xff1a; getCartList(uid: number): Promise<CartItem[]> {return new Promise…

嵌入式框图、流程图绘制软件常用推荐

框图、流程图绘制软件介绍 1. ioDraw Create diagrams, Flowchart, Mindmap freely onlineioDraw is an easy-used free online diagramming application to create multiple diagrams, flowcharts,mindmaps, UML,UI sketches, etc.https://www.iodraw.com/diagram/ 功能&…

掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名

在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站流量的重要来源。随着人工智能技术的进步&#xff0c;越来越多的人开始使用ChatGPT等AI工具来生成文章。然而&#xff0c;虽然这些工具可以快速生成内容&#xff0c;但要确保这些内容在搜索引擎中…

【光伏开发】工商业光伏的优势

随着全球对可再生能源的日益重视和环保意识的增强&#xff0c;工商业光伏作为一种清洁、高效的能源利用方式&#xff0c;正在得到广泛的推广和应用。工商业光伏系统通过安装在工厂、仓库、办公楼等工商业场所的太阳能电池板&#xff0c;将太阳能转化为电能&#xff0c;以满足工…

PID算法介绍以及代码实现过程说明

写在正文之前 在上一篇文章就说会在这两天会基于PID写一个文章&#xff0c;这里的原理部分值得大家都看一下&#xff0c;代码部分的实现是基于python的&#xff0c;但是对于使用其他编程语言的朋友&#xff0c;由于我写的很通俗易懂&#xff0c;所以也值得借鉴。 一、PID算法…