0


SpringBoot 整合第三方登录(微信、支付宝、QQ、Github)

SpringBoot 整合第三方登录(微信、支付宝、QQ、Github)

Spring Boot是一种轻量级的Java框架,可以简化Web应用程序的开发过程。同时,Spring Boot也提供了很多的扩展功能和插件,可以轻松地集成第三方登录功能,如微信、支付宝、QQ等等。本篇博客将向您展示如何使用Spring Boot来集成第三方登录功能。

在这里插入图片描述

1. 前置准备

在开始集成第三方登录之前,您需要先注册开发者账号并申请相关的API Key。这些API Key通常包括App ID、App Secret等信息,您需要在应用程序中使用这些信息来进行身份验证和授权。
微信公众平台
支付宝开放平台
QQ开放平台
GitHub

2. 集成微信登录

2.1. 注册开发者账号并创建应用

在 微信公众平台 注册开发者账号,并创建一个应用,获取App ID和App Secret。

2.2. 添加依赖

在Spring Boot项目中添加以下依赖:

<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.4.0</version></dependency>

2.3. 配置应用信息

在Spring Boot项目的配置文件中,添加以下配置信息:

wx:mp:appId: your_app_id
    secret: your_app_secret

2.4. 创建授权URL

在应用程序中创建授权URL,引导用户跳转到微信登录页面:

@AutowiredprivateWxMpService wxMpService;@RequestMapping("/wx/login")publicStringwxLogin(){String redirectUrl ="http://your_domain.com/wx/callback";String url = wxMpService.oauth2buildAuthorizationUrl(redirectUrl,WxConsts.OAuth2Scope.SNSAPI_USERINFO,null);return"redirect:"+ url;}

2.5. 处理回调

在应用程序中处理微信登录回调,并获取用户信息:

@AutowiredprivateWxMpService wxMpService;@RequestMapping("/wx/callback")publicStringwxCallback(@RequestParam("code")String code,@RequestParam("state")String state,HttpSession session){try{WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(accessToken,null);// 获取用户信息并处理}catch(WxErrorException e){
        e.printStackTrace();}return"redirect:/";}

3. 集成支付宝登录

3.1. 注册开发者账号并创建应用

在 支付宝开放平台 注册开发者账号,并创建一个应用,获取App ID和App Secret。

3.2. 添加依赖

在Spring Boot项目中添加以下依赖:

<dependency><groupId>com.alipay</groupId><artifactId>alipay-sdk-java</artifactId><version>4.10.1.ALL</version></dependency>

3.3. 配置应用信息

在SpringBoot项目的配置文件中,添加以下配置信息:

alipay:app-id: your_app_id
  private-key: your_private_key
  public-key: your_public_key
  gateway-url: https://openapi.alipay.com/gateway.do

3.4. 创建授权URL

在应用程序中创建授权URL,引导用户跳转到支付宝登录页面:

@AutowiredprivateAlipayClient alipayClient;@RequestMapping("/alipay/login")publicStringalipayLogin()throwsAlipayApiException{AlipaySystemOauthTokenRequest tokenRequest =newAlipaySystemOauthTokenRequest();
    tokenRequest.setCode("");
    tokenRequest.setGrantType("authorization_code");
    tokenRequest.setCode("auth_code");AlipaySystemOauthTokenResponse tokenResponse = alipayClient.execute(tokenRequest);String accessToken = tokenResponse.getAccessToken();AlipayUserInfoShareRequest userInfoRequest =newAlipayUserInfoShareRequest();AlipayUserInfoShareResponse userInfoResponse = alipayClient.execute(userInfoRequest, accessToken);// 获取用户信息并处理return"redirect:/";}

3.5. 处理回调

支付宝登录没有类似于微信的授权URL,而是需要通过Code来获取AccessToken。在应用程序中处理支付宝登录回调,并获取用户信息:

@AutowiredprivateAlipayClient alipayClient;@RequestMapping("/alipay/callback")publicStringalipayCallback(@RequestParam("auth_code")String authCode)throwsAlipayApiException{AlipaySystemOauthTokenRequest tokenRequest =newAlipaySystemOauthTokenRequest();
    tokenRequest.setCode(authCode);
    tokenRequest.setGrantType("authorization_code");AlipaySystemOauthTokenResponse tokenResponse = alipayClient.execute(tokenRequest);String accessToken = tokenResponse.getAccessToken();AlipayUserInfoShareRequest userInfoRequest =newAlipayUserInfoShareRequest();AlipayUserInfoShareResponse userInfoResponse = alipayClient.execute(userInfoRequest, accessToken);// 获取用户信息并处理return"redirect:/";}

4. 集成QQ登录

4.1. 注册开发者账号并创建应用

在 QQ开放平台 注册开发者账号,并创建一个应用,获取App ID和App Key。

4.2. 添加依赖

在Spring Boot项目中添加以下依赖:

<dependency><groupId>org.springframework.social</groupId><artifactId>spring-social-qq</artifactId><version>3.0.0.M3</version></dependency>

4.3. 配置应用信息

在Spring Boot项目的配置文件中,添加以下配置信息:

spring:social:qq:app-id: your_app_id
      app-secret: your_app_key
      provider-id: qq

4.4. 创建授权URL

在应用程序中创建授权URL,引导用户跳转到QQ登录页面:

@AutowiredprivateQQConnectionFactory connectionFactory;@RequestMapping("/qq/login")publicStringqqLogin(HttpServletRequest request,HttpServletResponse response)throwsException{OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();String authorizeUrl = oauth2Operations.buildAuthorizeUrl(GrantType.AUTHORIZATION_CODE,newOAuth2Parameters());return"redirect:"+ authorizeUrl;}

4.5. 处理回调
在应用程序中处理QQ登录回调,并获取用户信息:

@AutowiredprivateQQConnectionFactory connectionFactory;@RequestMapping("/qq/callback")publicStringqqCallback(@RequestParam("code")String code,HttpServletRequest request){try{OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();AccessGrant accessGrant = oauth2Operations.exchangeForAccess(code,"",newOAuth2Parameters());Connection<QQ> connection = connectionFactory.createConnection(accessGrant);QQ api = connection.getApi();QQUserInfo userInfo = api.getUserInfo();// 获取用户信息并处理return"redirect:/";}catch(Exception e){
        e.printStackTrace();return"redirect:/login";}}

5. 集成GitHub登录

5.1. 注册开发者账号并创建应用

在 GitHub 注册开发者账号,并创建一个应用,获取Client ID和Client Secret。

5.2. 添加依赖

在Spring Boot项目中添加以下依赖:

<dependency><groupId>org.springframework.social</groupId><artifactId>spring-social-github</artifactId><version>1.1.2.RELEASE</version></dependency>

5.3. 配置应用信息

在Spring Boot项目的配置文件中,添加以下配置信息:

spring:social:github:client-id: your_client_id
      client-secret: your_client_secret
      provider-id: github

5.4. 创建授权URL

在应用程序中创建授权URL,引导用户跳转到GitHub登录页面:

@AutowiredprivateGitHubConnectionFactory connectionFactory;@RequestMapping("/github/login")publicStringgithubLogin(HttpServletRequest request,HttpServletResponse response){OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();String authorizeUrl = oauth2Operations.buildAuthorizeUrl(GrantType.AUTHORIZATION_CODE,newOAuth2Parameters());return"redirect:"+ authorizeUrl;}

5.5. 处理回调

在应用程序中处理GitHub登录回调,并获取用户信息:

@AutowiredprivateGitHubConnectionFactory connectionFactory;@RequestMapping("/github/callback")publicStringgithubCallback(@RequestParam("code")String code,HttpServletRequest request){try{OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();AccessGrant accessGrant = oauth2Operations.exchangeForAccess(code,"",newOAuth2Parameters());Connection<GitHub> connection = connectionFactory.createConnection(accessGrant);GitHub api = connection.getApi();GitHubUserProfile userProfile = api.userOperations().getUserProfile();// 获取用户信息并处理return"redirect:/";}catch(Exception e){
        e.printStackTrace();return"redirect:/login";}}

6. 总结

本文介绍了如何在Spring Boot项目中集成微信、支付宝、QQ和GitHub登录功能。对于其他第三方登录,也可以按照类似的步骤进行集成。通过第三方登录,可以方便地获取用户信息,提高用户体验和数据收集效率。


本文转载自: https://blog.csdn.net/weixin_45626288/article/details/129727671
版权归原作者 ℳ₯㎕ddzོꦿ࿐ 所有, 如有侵权,请联系我们删除。

“SpringBoot 整合第三方登录(微信、支付宝、QQ、Github)”的评论:

还没有评论