diff --git a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java index 82052e351..5ccd14721 100644 --- a/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java +++ b/scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java @@ -255,8 +255,14 @@ public Future getAccessToken(String code, return getAccessToken(AccessTokenRequestParams.create(code), callback); } - // ===== refresh AccessToken methods ===== + protected OAuthRequest createRefreshTokenRequest(String refreshToken, String scope) { + return createRefreshTokenRequest(refreshToken, scope, null); + } + + // ===== refresh AccessToken methods ===== + protected OAuthRequest createRefreshTokenRequest(String refreshToken, String scope, + Map additionalParams) { if (refreshToken == null || refreshToken.isEmpty()) { throw new IllegalArgumentException("The refreshToken cannot be null or empty"); } @@ -273,6 +279,12 @@ protected OAuthRequest createRefreshTokenRequest(String refreshToken, String sco request.addParameter(OAuthConstants.REFRESH_TOKEN, refreshToken); request.addParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.REFRESH_TOKEN); + if (additionalParams != null && !additionalParams.isEmpty()) { + for (Map.Entry entry : additionalParams.entrySet()) { + request.addParameter(entry.getKey(), entry.getValue()); + } + } + logRequestWithParams("refresh token", request); return request; @@ -283,7 +295,7 @@ public Future refreshAccessTokenAsync(String refreshToken) { } public Future refreshAccessTokenAsync(String refreshToken, String scope) { - return refreshAccessToken(refreshToken, scope, null); + return refreshAccessToken(refreshToken, scope, (OAuthAsyncRequestCallback) null); } public OAuth2AccessToken refreshAccessToken(String refreshToken) @@ -293,7 +305,12 @@ public OAuth2AccessToken refreshAccessToken(String refreshToken) public OAuth2AccessToken refreshAccessToken(String refreshToken, String scope) throws IOException, InterruptedException, ExecutionException { - final OAuthRequest request = createRefreshTokenRequest(refreshToken, scope); + return refreshAccessToken(refreshToken, scope, (Map) null); + } + + public OAuth2AccessToken refreshAccessToken(String refreshToken, String scope, Map additionalParams) + throws IOException, InterruptedException, ExecutionException { + final OAuthRequest request = createRefreshTokenRequest(refreshToken, scope, additionalParams); return sendAccessTokenRequestSync(request); }