网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

Spring Security 6.x 微信公众平台OAuth2授权实战,如何轻松实现?

GG网络技术分享 2026-04-17 07:32 0


Spring Security 6.x 微信公众平台OAuth2授权实战

至于吗? 哎, 最近接了个项目,需要在 Spring Boot 项目里集成微信公众号的网页授权登录。说实话,一开始看着微信官方文档头都大了!各种参数、流程、错误码…简直是噩梦。好在折腾了一圈,总算是搞定了。现在把经验分享出来希望能帮到那些和我一样苦苦挣扎的开发者们。 这玩意儿真麻烦啊!

前言

又爱又恨。 搭建Spring Security OAuth2授权码模式demo,一方面在慢慢完善该文过程中做一个系统的,一方面做一个知识输出。

本文档详细介绍了如何在Spring Security框架基础上定制开发微信公众号网页授权登录的OAuth2客户端。详细阐述了微信公众平台OAuth2服务的流程、 不堪入目。 参数配置及差异分析,并提供了具体的开发实现步骤和代码示例,帮助开发者实现定制化需求。

上一篇介绍了OAuth2协议的基本原理,以及Spring Sec

一、 准备工作

不地道。 先说说要有一个微信公众号,并且在微信开放平台申请应用信息。这些信息是后续配置的关键。 别忘了开通网页授权!不然啥也干不了。

1.1 添加依赖

需要在 pom.xml 文件中添加以下依赖:

依赖 版本
spring-boot-starter-web 3.3.0
spring-boot-starter-security 3.3.0
spring-security-oauth2-client 6.3.0

1.2 配置application.yml

spring: 
  security: 
    oauth2: 
      client: 
        registration: 
          wechat: 
            client-id: ********* #你的AppID替换这里!重要!重要!重要!千万别用我的!我只是个例子!真的!相信我!╯︵┻━┻     # AppID替换成你的appId哦~ 你懂的~ 不然就报错了~ 我已经提醒你了哦~          client-secret: ******************* #你的AppSecret替换这里! 重要!重要!重要!千万别用我的!我只是个例子!真的!相信我!# AppSecret替换成你的appSecret哦~ 你懂的~ 不然就报错了~ 我已经提醒你了哦~            authorization-grant-type: authorization_code         redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"         scope: snsapi_userinfo # 该scope允许获取微信的用户信息     provider:       wechat:         authorization-uri: https:///connect/oauth2/authorize       token-uri: https:///sns/oauth2/access_token       user-info-uri: https:///sns/userinfo       user-name-attribute: nickname # 用户名对应的属性名称,即微信昵称

二、核心配置

HttpSecurity 配置

@Beanpublic SecurityFilterChain filterChain throws Exception { http .oauth2Login ...) .tokenEndpoint ...) .userInfoEndpoint ...) ); return ; }

自定义 OAuth2AuthorizationRequestResolver

三、获取 Access Token

https:///sns/oauth2/accesstoken?appid=APPID&secret=SECRET&code=CODE&granttype=authorization_code

四、获取用户信息

精神内耗。 https:///sns/userinfo?accesstoken=ACCESSTOKEN&openid=OPENID&lang=zh_CN

五、代码示例

@RestControllerpublic class UserController { @GetMapping public String user { String username = .getAuntication.getName; return "Hello " + username; } },闹乌龙。

六、一些坑和注意事项

  • 一定要正确设置 redirect URI
  • 微信对参数顺序有要求
  • 处理好异常情况


提交需求或反馈

Demand feedback