Skip to content

Commit 4e90348

Browse files
committed
implement possibility to add extra parameters to Access Token Request (AccessTokenRequestParams#*ExtraParameters methods), #980 (thanks to https://github.com/pmorch)
1 parent f5a6f0b commit 4e90348

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

changelog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
* add ScopeBuilder to easily specify multiple scopes while requesting OAuth2.0 Access Tokens
33
* make Base64 en/de-coding not dependent from java8 implementation (use three optional implementation
44
(internal java 8+, Apache Commons Codec, JAXB) detected in runtime) (thanks to https://github.com/CodingFabian)
5+
* implement possibility to add extra parameters to Access Token Request
6+
(AccessTokenRequestParams#*ExtraParameters methods), https://github.com/scribejava/scribejava/issues/980
7+
(thanks to https://github.com/pmorch)
58

69
[8.1.0]
710
* add raw Response (with HTTP response code and body) as member to the OAuth2AccessTokenErrorResponse

scribejava-core/src/main/java/com/github/scribejava/core/oauth/AccessTokenRequestParams.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package com.github.scribejava.core.oauth;
22

33
import com.github.scribejava.core.builder.ScopeBuilder;
4+
import java.util.HashMap;
5+
import java.util.Map;
46

7+
/**
8+
* not thread safe
9+
*/
510
public class AccessTokenRequestParams {
611

712
private final String code;
813
private String pkceCodeVerifier;
914
private String scope;
15+
private Map<String, String> extraParameters;
1016

1117
public AccessTokenRequestParams(String code) {
1218
this.code = code;
@@ -31,6 +37,34 @@ public AccessTokenRequestParams scope(ScopeBuilder scope) {
3137
return this;
3238
}
3339

40+
public AccessTokenRequestParams addExtraParameters(Map<String, String> extraParameters) {
41+
if (extraParameters == null || extraParameters.isEmpty()) {
42+
return this;
43+
}
44+
if (this.extraParameters == null) {
45+
extraParameters = new HashMap<>();
46+
}
47+
this.extraParameters.putAll(extraParameters);
48+
return this;
49+
}
50+
51+
public AccessTokenRequestParams addExtraParameter(String name, String value) {
52+
if (this.extraParameters == null) {
53+
extraParameters = new HashMap<>();
54+
}
55+
this.extraParameters.put(name, value);
56+
return this;
57+
}
58+
59+
public AccessTokenRequestParams setExtraParameters(Map<String, String> extraParameters) {
60+
this.extraParameters = extraParameters;
61+
return this;
62+
}
63+
64+
public Map<String, String> getExtraParameters() {
65+
return extraParameters;
66+
}
67+
3468
public String getCode() {
3569
return code;
3670
}

scribejava-core/src/main/java/com/github/scribejava/core/oauth/OAuth20Service.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,14 @@ protected OAuthRequest createAccessTokenRequest(AccessTokenRequestParams params)
140140
if (pkceCodeVerifier != null) {
141141
request.addParameter(PKCE.PKCE_CODE_VERIFIER_PARAM, pkceCodeVerifier);
142142
}
143+
144+
final Map<String, String> extraParameters = params.getExtraParameters();
145+
if (extraParameters != null && !extraParameters.isEmpty()) {
146+
for (Map.Entry<String, String> extraParameter : extraParameters.entrySet()) {
147+
request.addParameter(extraParameter.getKey(), extraParameter.getValue());
148+
}
149+
}
150+
143151
logRequestWithParams("access token", request);
144152
return request;
145153
}

0 commit comments

Comments
 (0)