Gihub三方登陆

本文详细介绍了如何在GitHub上创建OAuth应用,并通过三步实现用户授权。首先,登录GitHub并设置OAuth App,然后用户通过授权获取code,接着用code换取access token,最后利用token获取用户信息。整个过程涉及的URL回调、Header设置及信息交换关键步骤逐一解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Github官方文档

1.创建密钥和私钥

settings->Developer settings->OAuth Apps->New OAuth App

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.分三步请求
1.登陆得到code

在这里插入图片描述
在这里插入图片描述

回调地址为刚才设置的回调地址 /xxx1用于接收code
回调地址格式:设置的基础地址/xxx1

2.收到code请求token

之后会收到回调 回调的url就为上一个传递的地址
http://192.168.16.64:9000/github/authorize-callback?code=672d27e98d4b039f0357

3.请求token

在这里插入图片描述

回调地址格式和上方一样: 设置基础地址/xxx2
Header设置 Accept:application/json
在这里插入图片描述

在这里插入图片描述

4.获取用户信息

在这里插入图片描述

在这里插入图片描述

Spring Client 默认集成了部分第三方登录功能,例如 Google、Facebook 等。如果需要使用其他的应用或平台作为第三方登录服务提供方,则可以按照以下步骤自定义配置: ### 步骤一:注册并获取新的应用信息 首先前往目标第三方服务商的开发者页面(如微博开放平台、GitHub 开发者设置等),创建一个新的应用程序,并获取相应的 **Client ID** 和 **Client Secret**。 --- ### 步骤二:添加依赖项 确保项目中已经引入了 Spring Security OAuth2 的相关依赖项。如果没有,请将下面的内容加入到项目的 `pom.xml` 文件中: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency> ``` --- ### 步骤三:配置 application.properties 或 application.yml 在 Spring Boot 中通过配置文件指定新应用的信息。以下是 YAML 格式的示例配置: ```yaml spring: security: oauth2: client: registration: custom-provider: # 自定义名称,比如 weibo 表示新浪微博登录 provider: custom-provider clientId: your_client_id_here # 替换为实际的clientId clientSecret: your_client_secret_here # 替换为实际的clientSecret redirectUri: "{baseUrl}/login/oauth2/code/{registrationId}" # 回调地址模板 authorizationGrantType: authorization_code provider: custom-provider: # 对应上文的provider字段名 authorization-uri: https://custom.provider.com/auth # 第三方授权URL token-uri: https://custom.provider.com/token # 获取token URL user-info-uri: https://custom.provider.com/userinfo # 用户信息URI jwk-set-uri: https://custom.provider.com/jwks # 公钥集合URI (如果有) user-name-attribute: sub # 返回用户信息的主要标识属性,默认sub ``` 注意将上述占位符替换为你所使用的第三方提供商的实际数据。 --- ### 步骤四:编写转换逻辑处理返回的数据 由于每个第三方服务商提供的用户信息结构不同,在默认情况下可能无法直接映射。因此你需要覆盖一些 Bean 来适配具体的返回值形式。 #### 示例代码 - 创建 OidcUserService 转换规则 ```java import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService; import org.springframework.security.oauth2.core.OAuth2User; import org.springframework.stereotype.Service; @Service public class CustomOidcUserService extends DefaultOAuth2UserService { @Override public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { // 使用父类加载原始 User 数据 OAuth2User oAuth2User = super.loadUser(userRequest); // 将其转为我们期望的对象模型或其他操作... return new CustomOAuth2User(oAuth2User); // 假设我们有一个包装器 } } ``` 之后还需要把该 Service 注册进上下文中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小草王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值