首页 > 其他分享 >SpringBoot 整合第三方登录(微信、支付宝、QQ、Github)

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

时间:2023-03-24 22:09:54浏览次数:51  
标签:QQ redirect code SpringBoot 登录 Spring Boot Github String

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,引导用户跳转到微信登录页面:

@Autowired
private WxMpService wxMpService;

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

2.5. 处理回调

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

@Autowired
private WxMpService wxMpService;

@RequestMapping("/wx/callback")
public String wxCallback(@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,引导用户跳转到支付宝登录页面:

@Autowired
private AlipayClient alipayClient;

@RequestMapping("/alipay/login")
public String alipayLogin() throws AlipayApiException {
    AlipaySystemOauthTokenRequest tokenRequest = new AlipaySystemOauthTokenRequest();
    tokenRequest.setCode("");
    tokenRequest.setGrantType("authorization_code");
    tokenRequest.setCode("auth_code");

    AlipaySystemOauthTokenResponse tokenResponse = alipayClient.execute(tokenRequest);
    String accessToken = tokenResponse.getAccessToken();

    AlipayUserInfoShareRequest userInfoRequest = new AlipayUserInfoShareRequest();
    AlipayUserInfoShareResponse userInfoResponse = alipayClient.execute(userInfoRequest, accessToken);

    // 获取用户信息并处理

    return "redirect:/";
}

3.5. 处理回调

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

@Autowired
private AlipayClient alipayClient;

@RequestMapping("/alipay/callback")
public String alipayCallback(@RequestParam("auth_code") String authCode) throws AlipayApiException {
    AlipaySystemOauthTokenRequest tokenRequest = new AlipaySystemOauthTokenRequest();
    tokenRequest.setCode(authCode);
    tokenRequest.setGrantType("authorization_code");

    AlipaySystemOauthTokenResponse tokenResponse = alipayClient.execute(tokenRequest);
    String accessToken = tokenResponse.getAccessToken();

    AlipayUserInfoShareRequest userInfoRequest = new AlipayUserInfoShareRequest();
    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登录页面:

@Autowired
private QQConnectionFactory connectionFactory;

@RequestMapping("/qq/login")
public String qqLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
    OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();
    String authorizeUrl = oauth2Operations.buildAuthorizeUrl(GrantType.AUTHORIZATION_CODE, new OAuth2Parameters());
    return "redirect:" + authorizeUrl;
}

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

@Autowired
private QQConnectionFactory connectionFactory;

@RequestMapping("/qq/callback")
public String qqCallback(@RequestParam("code") String code, HttpServletRequest request) {
    try {
        OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();
        AccessGrant accessGrant = oauth2Operations.exchangeForAccess(code, "", new OAuth2Parameters());

        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登录页面:

@Autowired
private GitHubConnectionFactory connectionFactory;

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

5.5. 处理回调

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

@Autowired
private GitHubConnectionFactory connectionFactory;

@RequestMapping("/github/callback")
public String githubCallback(@RequestParam("code") String code, HttpServletRequest request) {
    try {
        OAuth2Operations oauth2Operations = connectionFactory.getOAuthOperations();
        AccessGrant accessGrant = oauth2Operations.exchangeForAccess(code, "", new OAuth2Parameters());

        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登录功能。对于其他第三方登录,也可以按照类似的步骤进行集成。通过第三方登录,可以方便地获取用户信息,提高用户体验和数据收集效率。

标签:QQ,redirect,code,SpringBoot,登录,Spring,Boot,Github,String
From: https://blog.51cto.com/u_15618273/6144742

相关文章