OAuth client library APIs for 50+ major OAuth 1.0a and 2.0 providers
npx @tessl/cli install tessl/maven-com-github-scribejava--scribejava-apis@8.3.0ScribeJava APIs is a comprehensive OAuth client library module that provides ready-to-use implementations for over 50 major OAuth 1.0a and 2.0 providers including Google, Facebook, Twitter, GitHub, LinkedIn, Instagram, and many others. It offers a simple configuration approach with thread-safe operations and supports various HTTP clients while maintaining high performance and extensive compatibility from Java 7 onwards.
implementation 'com.github.scribejava:scribejava-apis:8.3.3' (Gradle) or <dependency><groupId>com.github.scribejava</groupId><artifactId>scribejava-apis</artifactId><version>8.3.3</version></dependency> (Maven)import com.github.scribejava.apis.GoogleApi20;
import com.github.scribejava.apis.FacebookApi;
import com.github.scribejava.apis.GitHubApi;
import com.github.scribejava.apis.TwitterApi;
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.oauth.OAuth20Service;
import com.github.scribejava.core.oauth.OAuth10aService;import com.github.scribejava.apis.GoogleApi20;
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.oauth.OAuth20Service;
// Create OAuth service for Google
OAuth20Service service = new ServiceBuilder("your_client_id")
.apiSecret("your_client_secret")
.callback("http://localhost:8080/callback")
.build(GoogleApi20.instance());
// Get authorization URL
String authorizationUrl = service.getAuthorizationUrl();
// Exchange authorization code for access token
OAuth2AccessToken accessToken = service.getAccessToken("authorization_code");
// Use access token to make authenticated requests
OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v1/userinfo");
service.signRequest(accessToken.getAccessToken(), request);
Response response = service.execute(request);ScribeJava APIs is built around several key components:
DefaultApi20 (OAuth 2.0) or DefaultApi10a (OAuth 1.0a)instance() factory methodsCore OAuth 2.0 provider implementations supporting authorization code flow, client credentials, device authorization grant, and PKCE extensions. Covers 50+ major providers including social networks, cloud services, and enterprise identity providers.
public abstract class DefaultApi20 {
public static ApiClass instance();
public String getAccessTokenEndpoint();
protected String getAuthorizationBaseUrl();
public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
public String getRevokeTokenEndpoint();
public String getRefreshTokenEndpoint();
public ClientAuthentication getClientAuthentication();
public String getDeviceAuthorizationEndpoint();
public DeviceAuthorizationJsonExtractor getDeviceAuthorizationExtractor();
}OAuth 1.0a provider implementations supporting the three-legged authorization flow with request tokens and signature-based authentication. Includes Twitter, Yahoo, Flickr, and other legacy OAuth providers.
public abstract class DefaultApi10a {
public static ApiClass instance();
public String getAccessTokenEndpoint();
public String getRequestTokenEndpoint();
public String getAuthorizationBaseUrl();
}Custom OAuth service implementations that extend the base OAuth functionality with provider-specific features like Facebook's app secret proof, Mail.ru's signature requirements, and Instagram's specialized token handling.
public class FacebookService extends OAuth20Service {
public void signRequest(String accessToken, OAuthRequest request);
}
public class MailruOAuthService extends OAuth20Service {
public void signRequest(String accessToken, OAuthRequest request);
}Extended OAuth token classes that include provider-specific metadata and additional fields beyond the standard access token, refresh token, and expiration information.
public class SalesforceToken extends OAuth2AccessToken {
public String getInstanceUrl();
}
public class OpenIdOAuth2AccessToken extends OAuth2AccessToken {
public String getIdToken();
public JsonNode getIdTokenClaims();
}
public class VKOAuth2AccessToken extends OAuth2AccessToken {
public String getEmail();
}Custom token extractors for providers that use non-standard JSON response formats or require special error handling beyond the default OAuth 2.0 token response format.
public abstract class OAuth2AccessTokenJsonExtractor implements TokenExtractor<OAuth2AccessToken> {
public OAuth2AccessToken extract(Response response) throws IOException;
public void generateError(Response response) throws IOException;
}// Core ScribeJava types from scribejava-core
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
import com.github.scribejava.core.oauth.OAuth10aService;
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication;