CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-github-scribejava--scribejava-apis

OAuth client library APIs for 50+ major OAuth 1.0a and 2.0 providers

Pending
Overview
Eval results
Files

oauth2-providers.mddocs/

OAuth 2.0 Provider APIs

OAuth 2.0 provider implementations for major social networks, cloud services, and enterprise identity providers. All OAuth 2.0 APIs extend DefaultApi20 and follow the singleton pattern.

Capabilities

Google APIs

Google OAuth 2.0 API with OpenID Connect support, device authorization flow, and token revocation.

public class GoogleApi20 extends DefaultApi20 {
    public static GoogleApi20 instance();
    public String getAccessTokenEndpoint(); // https://oauth2.googleapis.com/token
    protected String getAuthorizationBaseUrl(); // https://accounts.google.com/o/oauth2/v2/auth
    public String getRevokeTokenEndpoint(); // https://oauth2.googleapis.com/revoke
    public String getDeviceAuthorizationEndpoint(); // https://oauth2.googleapis.com/device/code
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
    public DeviceAuthorizationJsonExtractor getDeviceAuthorizationExtractor();
}

Usage Example:

OAuth20Service service = new ServiceBuilder("client_id")
    .apiSecret("client_secret")
    .callback("callback_url")
    .defaultScope("openid profile email")
    .build(GoogleApi20.instance());

String authUrl = service.getAuthorizationUrl();
// After user authorization...
OAuth2AccessToken token = service.getAccessToken("authorization_code");

Facebook API

Facebook OAuth 2.0 API with custom version support and specialized service for app secret proof.

public class FacebookApi extends DefaultApi20 {
    public static FacebookApi instance(); // Default version 3.2
    public static FacebookApi customVersion(String version);
    public String getAccessTokenEndpoint(); // https://graph.facebook.com/v{version}/oauth/access_token
    protected String getAuthorizationBaseUrl(); // https://www.facebook.com/v{version}/dialog/oauth
    public String getRefreshTokenEndpoint(); // Throws UnsupportedOperationException
    public Verb getAccessTokenVerb(); // GET
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
    public ClientAuthentication getClientAuthentication();
    public FacebookService createService(...); // Returns specialized service
}

Usage Example:

// Default Facebook API (version 3.2)
OAuth20Service service = new ServiceBuilder("app_id")
    .apiSecret("app_secret")
    .callback("callback_url")
    .build(FacebookApi.instance());

// Custom Facebook API version
OAuth20Service service = new ServiceBuilder("app_id")
    .apiSecret("app_secret")
    .callback("callback_url")
    .build(FacebookApi.customVersion("15.0"));

GitHub API

GitHub OAuth 2.0 API for GitHub application authentication.

public class GitHubApi extends DefaultApi20 {
    public static GitHubApi instance();
    public String getAccessTokenEndpoint(); // https://github.com/login/oauth/access_token
    protected String getAuthorizationBaseUrl(); // https://github.com/login/oauth/authorize
    public Verb getAccessTokenVerb(); // POST
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
}

LinkedIn APIs

LinkedIn OAuth 2.0 API for professional network integration.

public class LinkedInApi20 extends DefaultApi20 {
    public static LinkedInApi20 instance();
    public String getAccessTokenEndpoint(); // https://www.linkedin.com/oauth/v2/accessToken
    protected String getAuthorizationBaseUrl(); // https://www.linkedin.com/oauth/v2/authorization
    public ClientAuthentication getClientAuthentication();
}

Microsoft Azure Active Directory APIs

Microsoft Azure AD OAuth 2.0 APIs for enterprise authentication.

public class MicrosoftAzureActiveDirectory20Api extends BaseMicrosoftAzureActiveDirectoryApi {
    public static MicrosoftAzureActiveDirectory20Api instance(); // Common tenant
    public static MicrosoftAzureActiveDirectory20Api custom(String tenant); // Custom tenant
    public String getAccessTokenEndpoint(); // https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
    protected String getAuthorizationBaseUrl(); // https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
    public ClientAuthentication getClientAuthentication();
    public BearerSignature getBearerSignature();
}

public class MicrosoftAzureActiveDirectoryApi extends BaseMicrosoftAzureActiveDirectoryApi {
    public static MicrosoftAzureActiveDirectoryApi instance(); // Common tenant
    public static MicrosoftAzureActiveDirectoryApi customTenant(String tenant);
    public static MicrosoftAzureActiveDirectoryApi customResource(String resource);
    public static MicrosoftAzureActiveDirectoryApi custom(String tenant, String resource);
    public String getAccessTokenEndpoint(); // https://login.microsoftonline.com/{tenant}/oauth2/token
    protected String getAuthorizationBaseUrl(); // Dynamic with resource parameter
    public BearerSignature getBearerSignature();
}

Social Media APIs

Popular social media platform OAuth 2.0 APIs.

public class InstagramApi extends DefaultApi20 {
    public static InstagramApi instance();
    public String getAccessTokenEndpoint(); // https://api.instagram.com/oauth/access_token
    protected String getAuthorizationBaseUrl(); // https://api.instagram.com/oauth/authorize
    public Verb getAccessTokenVerb(); // POST
}

public class SlackApi extends DefaultApi20 {
    public static SlackApi instance();
    public String getAccessTokenEndpoint(); // https://slack.com/api/oauth.access
    protected String getAuthorizationBaseUrl(); // https://slack.com/oauth/authorize
    public Verb getAccessTokenVerb(); // POST
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
}

public class DiscordApi extends DefaultApi20 {
    public static DiscordApi instance();
    public String getAccessTokenEndpoint(); // https://discord.com/api/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://discord.com/api/oauth2/authorize
    public ClientAuthentication getClientAuthentication();
}

public class VkontakteApi extends DefaultApi20 {
    public static VkontakteApi instance();
    public String getAccessTokenEndpoint(); // https://oauth.vk.com/access_token
    protected String getAuthorizationBaseUrl(); // https://oauth.vk.com/authorize
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
}

Cloud Storage APIs

Cloud storage and file sharing service OAuth 2.0 APIs.

public class BoxApi20 extends DefaultApi20 {
    public static BoxApi20 instance();
    public String getAccessTokenEndpoint(); // https://api.box.com/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://account.box.com/api/oauth2/authorize
    public ClientAuthentication getClientAuthentication();
}

public class DropboxApi extends DefaultApi20 {
    public static DropboxApi instance();
    public String getAccessTokenEndpoint(); // https://api.dropboxapi.com/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://www.dropbox.com/oauth2/authorize
    public ClientAuthentication getClientAuthentication();
}

public class ImgurApi extends DefaultApi20 {
    public static ImgurApi instance();
    public String getAccessTokenEndpoint(); // https://api.imgur.com/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://api.imgur.com/oauth2/authorize
    public ClientAuthentication getClientAuthentication();
}

Business and Productivity APIs

Enterprise and productivity platform OAuth 2.0 APIs.

public class SalesforceApi extends DefaultApi20 {
    public static SalesforceApi instance(); // Production environment
    public static SalesforceApi sandbox(); // Sandbox environment
    public String getAccessTokenEndpoint(); // Dynamic based on production/sandbox
    protected String getAuthorizationBaseUrl(); // Dynamic based on production/sandbox
    public Verb getAccessTokenVerb(); // POST
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor(); // Returns SalesforceToken
    public ClientAuthentication getClientAuthentication();
    
    // Static utility method for TLS configuration
    public static void initTLSv11orUpper() throws NoSuchAlgorithmException, KeyManagementException, IOException;
}

public class Asana20Api extends DefaultApi20 {
    public static Asana20Api instance();
    public String getAccessTokenEndpoint(); // https://app.asana.com/-/oauth_token
    protected String getAuthorizationBaseUrl(); // https://app.asana.com/-/oauth_authorize
    public ClientAuthentication getClientAuthentication();
}

public class KeycloakApi extends DefaultApi20 {
    public static KeycloakApi instance();
    // Note: Requires configuration for specific Keycloak instance
}

Health and Fitness APIs

Health and fitness platform OAuth 2.0 APIs.

public class FitbitApi20 extends DefaultApi20 {
    public static FitbitApi20 instance();
    public String getAccessTokenEndpoint(); // https://api.fitbit.com/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://www.fitbit.com/oauth2/authorize
    public ClientAuthentication getClientAuthentication();
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
}

public class PolarAPI extends DefaultApi20 {
    public static PolarAPI instance();
    public String getAccessTokenEndpoint(); // https://polarremote.com/v2/oauth2/token
    protected String getAuthorizationBaseUrl(); // https://flow.polar.com/oauth2/authorization
    public ClientAuthentication getClientAuthentication();
    public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor();
}

Regional and Specialized APIs

Region-specific and specialized platform OAuth 2.0 APIs.

public class MailruApi extends DefaultApi20 {
    public static MailruApi instance();
    public String getAccessTokenEndpoint(); // https://oauth.mail.ru/token
    protected String getAuthorizationBaseUrl(); // https://oauth.mail.ru/login
    public ClientAuthentication getClientAuthentication();
}

public class OdnoklassnikiApi extends DefaultApi20 {
    public static OdnoklassnikiApi instance();
    public String getAccessTokenEndpoint(); // https://api.odnoklassniki.ru/oauth/token.do
    protected String getAuthorizationBaseUrl(); // https://connect.ok.ru/oauth/authorize
    public ClientAuthentication getClientAuthentication();
}

public class KakaoApi extends DefaultApi20 {
    public static KakaoApi instance();
    public String getAccessTokenEndpoint(); // https://kauth.kakao.com/oauth/token
    protected String getAuthorizationBaseUrl(); // https://kauth.kakao.com/oauth/authorize
    public ClientAuthentication getClientAuthentication();
}

public class NaverApi extends DefaultApi20 {
    public static NaverApi instance();
    public String getAccessTokenEndpoint(); // https://nid.naver.com/oauth2.0/token
    protected String getAuthorizationBaseUrl(); // https://nid.naver.com/oauth2.0/authorize
    public ClientAuthentication getClientAuthentication();
}

Complete Provider List

OAuth 2.0 Providers (50+ providers)

All extend DefaultApi20 and use instance() singleton pattern:

  • Asana20Api - Asana project management
  • AutomaticAPI - Automatic car tracking
  • BoxApi20 - Box cloud storage
  • DataportenApi - Dataporten identity provider
  • DiscordApi - Discord chat platform
  • DoktornaraboteApi - Doktornarabote job platform
  • DropboxApi - Dropbox cloud storage
  • FacebookApi - Facebook social network
  • FitbitApi20 - Fitbit fitness tracking
  • Foursquare2Api - Foursquare location services
  • FrappeApi - Frappe framework
  • FreelancerApi - Freelancer job platform
  • GeniusApi - Genius lyrics platform
  • GitHubApi - GitHub code hosting
  • GoogleApi20 - Google services
  • HHApi - HeadHunter job platform
  • HiOrgServerApi20 - HiOrg emergency services
  • ImgurApi - Imgur image hosting
  • InstagramApi - Instagram photo sharing
  • KaixinApi20 - Kaixin social network
  • KakaoApi - Kakao Korean platform
  • KeycloakApi - Keycloak identity management
  • LinkedInApi20 - LinkedIn professional network
  • LiveApi - Microsoft Live services
  • MailruApi - Mail.ru Russian services
  • MediaWikiApi - MediaWiki platforms
  • MeetupApi20 - Meetup event platform
  • MicrosoftAzureActiveDirectory20Api - Modern Azure AD
  • MicrosoftAzureActiveDirectoryApi - Legacy Azure AD
  • MisfitApi - Misfit fitness tracking
  • NaverApi - Naver Korean services
  • OdnoklassnikiApi - Odnoklassniki Russian social network
  • PinterestApi - Pinterest image platform
  • PolarAPI - Polar fitness tracking
  • Px500Api - 500px photography platform
  • RenrenApi - Renren Chinese social network
  • SalesforceApi - Salesforce CRM
  • SinaWeiboApi20 - Sina Weibo Chinese microblog
  • SkyrockApi - Skyrock blogging platform
  • SlackApi - Slack team communication
  • StackExchangeApi - Stack Exchange Q&A network
  • TheThingsNetworkV1StagingApi - IoT network (V1 staging)
  • TheThingsNetworkV2PreviewApi - IoT network (V2 preview)
  • TutByApi - Tut.by Belarusian portal
  • UcozApi - uCoz website builder
  • VkontakteApi - VKontakte Russian social network
  • WunderlistAPI - Wunderlist task management
  • XeroApi20 - Xero accounting software
  • YahooApi20 - Yahoo services

Common Usage Patterns

Standard OAuth 2.0 Flow

// 1. Create service
OAuth20Service service = new ServiceBuilder("client_id")
    .apiSecret("client_secret")
    .callback("http://localhost:8080/callback")
    .defaultScope("read write")
    .build(ProviderApi.instance());

// 2. Get authorization URL
String authUrl = service.getAuthorizationUrl();

// 3. Exchange code for token
OAuth2AccessToken token = service.getAccessToken("authorization_code");

// 4. Make authenticated requests
OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.provider.com/user");
service.signRequest(token.getAccessToken(), request);
Response response = service.execute(request);

Token Refresh

// For providers that support token refresh
if (token.getRefreshToken() != null) {
    OAuth2AccessToken newToken = service.refreshAccessToken(token.getRefreshToken());
}

Device Authorization Flow (Google)

// Supported by GoogleApi20
DeviceAuthorization deviceAuth = service.getDeviceAuthorization();
System.out.println("Go to: " + deviceAuth.getVerificationUriComplete());
OAuth2AccessToken token = service.pollAccessToken(deviceAuth);

Install with Tessl CLI

npx tessl i tessl/maven-com-github-scribejava--scribejava-apis

docs

custom-tokens.md

index.md

oauth1a-providers.md

oauth2-providers.md

specialized-services.md

token-extractors.md

tile.json