@@ -92,37 +92,44 @@ protected OAuthRequest createAccessTokenRequest(String code) {
9292 return request ;
9393 }
9494
95- public final Future <OAuth2AccessToken > refreshAccessTokenAsync ( String refreshToken ) {
96- return refreshAccessToken ( refreshToken , null );
95+ public final Future <OAuth2AccessToken > getAccessTokenClientCredentialsGrantAsync ( ) {
96+ return getAccessTokenClientCredentialsGrant ( null );
9797 }
9898
99- public final OAuth2AccessToken refreshAccessToken ( String refreshToken )
99+ public final OAuth2AccessToken getAccessTokenClientCredentialsGrant ( )
100100 throws IOException , InterruptedException , ExecutionException {
101- final OAuthRequest request = createRefreshTokenRequest ( refreshToken );
101+ final OAuthRequest request = createAccessTokenClientCredentialsGrantRequest ( );
102102
103103 return sendAccessTokenRequestSync (request );
104104 }
105105
106- public final Future <OAuth2AccessToken > refreshAccessToken (String refreshToken ,
106+ /**
107+ * Start the request to retrieve the access token using client-credentials grant. The optionally provided callback
108+ * will be called with the Token when it is available.
109+ *
110+ * @param callback optional callback
111+ * @return Future
112+ */
113+ public final Future <OAuth2AccessToken > getAccessTokenClientCredentialsGrant (
107114 OAuthAsyncRequestCallback <OAuth2AccessToken > callback ) {
108- final OAuthRequest request = createRefreshTokenRequest ( refreshToken );
115+ final OAuthRequest request = createAccessTokenClientCredentialsGrantRequest ( );
109116
110117 return sendAccessTokenRequestAsync (request , callback );
111118 }
112119
113- protected OAuthRequest createRefreshTokenRequest (String refreshToken ) {
114- if (refreshToken == null || refreshToken .isEmpty ()) {
115- throw new IllegalArgumentException ("The refreshToken cannot be null or empty" );
116- }
117- final OAuthRequest request = new OAuthRequest (api .getAccessTokenVerb (), api .getRefreshTokenEndpoint ());
120+ protected OAuthRequest createAccessTokenClientCredentialsGrantRequest () {
121+ final OAuthRequest request = new OAuthRequest (api .getAccessTokenVerb (), api .getAccessTokenEndpoint ());
118122 final OAuthConfig config = getConfig ();
119123 request .addParameter (OAuthConstants .CLIENT_ID , config .getApiKey ());
120124 final String apiSecret = config .getApiSecret ();
121125 if (apiSecret != null ) {
122126 request .addParameter (OAuthConstants .CLIENT_SECRET , apiSecret );
123127 }
124- request .addParameter (OAuthConstants .REFRESH_TOKEN , refreshToken );
125- request .addParameter (OAuthConstants .GRANT_TYPE , OAuthConstants .REFRESH_TOKEN );
128+ final String scope = config .getScope ();
129+ if (scope != null ) {
130+ request .addParameter (OAuthConstants .SCOPE , scope );
131+ }
132+ request .addParameter (OAuthConstants .GRANT_TYPE , OAuthConstants .CLIENT_CREDENTIALS );
126133 return request ;
127134 }
128135
@@ -177,6 +184,40 @@ protected OAuthRequest createAccessTokenPasswordGrantRequest(String username, St
177184 return request ;
178185 }
179186
187+ public final Future <OAuth2AccessToken > refreshAccessTokenAsync (String refreshToken ) {
188+ return refreshAccessToken (refreshToken , null );
189+ }
190+
191+ public final OAuth2AccessToken refreshAccessToken (String refreshToken )
192+ throws IOException , InterruptedException , ExecutionException {
193+ final OAuthRequest request = createRefreshTokenRequest (refreshToken );
194+
195+ return sendAccessTokenRequestSync (request );
196+ }
197+
198+ public final Future <OAuth2AccessToken > refreshAccessToken (String refreshToken ,
199+ OAuthAsyncRequestCallback <OAuth2AccessToken > callback ) {
200+ final OAuthRequest request = createRefreshTokenRequest (refreshToken );
201+
202+ return sendAccessTokenRequestAsync (request , callback );
203+ }
204+
205+ protected OAuthRequest createRefreshTokenRequest (String refreshToken ) {
206+ if (refreshToken == null || refreshToken .isEmpty ()) {
207+ throw new IllegalArgumentException ("The refreshToken cannot be null or empty" );
208+ }
209+ final OAuthRequest request = new OAuthRequest (api .getAccessTokenVerb (), api .getRefreshTokenEndpoint ());
210+ final OAuthConfig config = getConfig ();
211+ request .addParameter (OAuthConstants .CLIENT_ID , config .getApiKey ());
212+ final String apiSecret = config .getApiSecret ();
213+ if (apiSecret != null ) {
214+ request .addParameter (OAuthConstants .CLIENT_SECRET , apiSecret );
215+ }
216+ request .addParameter (OAuthConstants .REFRESH_TOKEN , refreshToken );
217+ request .addParameter (OAuthConstants .GRANT_TYPE , OAuthConstants .REFRESH_TOKEN );
218+ return request ;
219+ }
220+
180221 /**
181222 * {@inheritDoc}
182223 */
0 commit comments