OAuth 客户端 for Java:库与代码示例概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

OAuth 客户端 for Java:如何选择与使用



OAuth(开放授权)是一种开放协议,允许第三方(例如您的 Java 应用程序)在无需传递用户登录名和密码的情况下,获得对用户资源的有限访问权限。在现代 Web 开发中,OAuth 2.0 是通过社交网络(Google、Facebook、VK)和企业系统(Microsoft、GitHub)进行授权的事实标准。



对于 Java,有多个成熟的库同时实现了 OAuth 客户端和服务端角色。在本文中,我们将介绍三种最流行的解决方案:ScribeJava、Spring Security OAuth 和 Google OAuth Client Library for Java。您将了解如何将它们集成到项目中,编写基本集成代码,并根据您的任务选择合适的工具。



1. ScribeJava — 轻量级 OAuth 客户端



ScribeJava 是一个简单轻量的库,支持 OAuth 1.0a 和 OAuth 2.0。它非常适合不需要完整 Spring 技术栈的独立应用程序或微服务。



依赖配置 (Maven)

<dependency>    <groupId>com.github.scribejava</groupId>    <artifactId>scribejava-apis</artifactId>    <version>8.3.3</version></dependency>


示例:通过 Google 登录

import com.github.scribejava.apis.GoogleApi20;import com.github.scribejava.core.builder.ServiceBuilder;import com.github.scribejava.core.model.*;import com.github.scribejava.core.oauth.OAuth20Service;

public class GoogleOAuthExample { public static void main(String[] args) throws Exception { String clientId = "您的_CLIENT_ID"; String clientSecret = "您的_CLIENT_SECRET"; String callbackUrl = "http://localhost:8080/callback";

OAuth20Service service = new ServiceBuilder(clientId) .apiSecret(clientSecret) .callback(callbackUrl) .scope("email profile") .build(GoogleApi20.instance());

// 获取用于重定向用户的 URL String authorizationUrl = service.getAuthorizationUrl(); System.out.println("请在浏览器中打开: " + authorizationUrl);

// 重定向后获取授权码(在实际应用中从 QueryString 获取) String code = "来自重定向的_CODE";

// 用授权码交换令牌 OAuth2AccessToken accessToken = service.getAccessToken(code); System.out.println("Access Token: " + accessToken.getAccessToken());

// 使用令牌请求用户数据 OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v2/userinfo"); service.signRequest(accessToken, request); Response response = service.execute(request); System.out.println("API 响应: " + response.getBody()); }}


ScribeJava 的优势:

  • 依赖最少(仅需 OkHttp 或 URLConnection)。
  • 开箱即用地支持数十个提供商(Google、Facebook、GitHub、VK 等)。
  • API 简单,没有复杂的抽象。


2. Spring Security OAuth — 适用于 Spring Boot 项目



如果您使用 Spring Boot,那么 Spring Security OAuth(spring-security-oauth2-client 模块)是最自然的选择。它与安全链完全集成,并允许通过 application.yml 配置提供商。



依赖配置 (Gradle)

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'


配置示例 (application.yml)

spring:  security:    oauth2:      client:        registration:                    

推荐