com.github.scribejava.apis.FacebookApi Maven / Gradle / Ivy
package com.github.scribejava.apis;
import java.io.OutputStream;
import com.github.scribejava.apis.facebook.FacebookAccessTokenJsonExtractor;
import com.github.scribejava.apis.facebook.FacebookService;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.httpclient.HttpClient;
import com.github.scribejava.core.httpclient.HttpClientConfig;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication;
import com.github.scribejava.core.oauth2.clientauthentication.RequestBodyAuthenticationScheme;
/**
* Facebook API
*/
public class FacebookApi extends DefaultApi20 {
private final String version;
protected FacebookApi() {
this("3.2");
}
protected FacebookApi(String version) {
this.version = version;
}
private static class InstanceHolder {
private static final FacebookApi INSTANCE = new FacebookApi();
}
public static FacebookApi instance() {
return InstanceHolder.INSTANCE;
}
public static FacebookApi customVersion(String version) {
return new FacebookApi(version);
}
@Override
public Verb getAccessTokenVerb() {
return Verb.GET;
}
@Override
public String getAccessTokenEndpoint() {
return "https://graph.facebook.com/v" + version + "/oauth/access_token";
}
@Override
public String getRefreshTokenEndpoint() {
throw new UnsupportedOperationException("Facebook doesn't support refreshing tokens");
}
@Override
protected String getAuthorizationBaseUrl() {
return "https://www.facebook.com/v" + version + "/dialog/oauth";
}
@Override
public TokenExtractor getAccessTokenExtractor() {
return FacebookAccessTokenJsonExtractor.instance();
}
@Override
public ClientAuthentication getClientAuthentication() {
return RequestBodyAuthenticationScheme.instance();
}
@Override
public FacebookService createService(String apiKey, String apiSecret, String callback, String defaultScope,
String responseType, OutputStream debugStream, String userAgent, HttpClientConfig httpClientConfig,
HttpClient httpClient) {
return new FacebookService(this, apiKey, apiSecret, callback, defaultScope, responseType, debugStream,
userAgent, httpClientConfig, httpClient);
}
}