package org.oauth2.client4j.service; import org.oauth2.client4j.builder.OAuthRequestBuilder; import org.oauth2.client4j.builder.provider.Provider; import org.oauth2.client4j.common.OAuth; import org.oauth2.client4j.http.OAuthHttpClient; import org.oauth2.client4j.http.OAuthRequest; import org.oauth2.client4j.http.Request; import org.oauth2.client4j.http.client.HttpClient; import org.oauth2.client4j.http.response.JSONAccessTokenResponse; import org.oauth2.client4j.http.response.OAuthResponse; import org.oauth2.client4j.model.OAuthConfig; public class OAuthServiceImpl implements OAuthService { private final Provider provider; private final OAuthConfig config; private HttpClient httpClient; public OAuthServiceImpl(Provider provider, OAuthConfig config) { this.provider = provider; this.config = config; } @Override public OAuthRequest getAuthorizationRequest() { return new OAuthRequestBuilder() .url(provider.getAuthorizationEndpoint()) .requestType(provider.getAuthorRequestType()).parameter(config) .build(); } @Override public OAuthResponse accessToken(String code) { return this.accessToken(code, provider.getAccessTokenResponseClass()); } @Override public <T extends OAuthResponse> T accessToken(String code, Class<T> responseClass) { Request request = new OAuthRequestBuilder() .url(provider.getAccessTokenEndpoint()) .requestType(provider.getAccessTokenRequestType()).body(config) .code(code).build(); request.addHeader(OAuth.HeaderType.CONTENT_TYPE, OAuth.ContentType.URL_ENCODED); return new OAuthHttpClient(this.httpClient).send(request, responseClass); } @Override public JSONAccessTokenResponse accessJsonToken(String code) { return this.accessToken(code, JSONAccessTokenResponse.class); } public void cutomeHttpClient(HttpClient client){ this.httpClient =client; } }