Skip to content

Commit 255a8e6

Browse files
committed
fix: allow spaces in scope param in OAuth2Accesstoken response
1 parent ba7f6f9 commit 255a8e6

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* fix Pinterest API (thanks to https://github.com/sschwieb)
55
* add Yahoo2 API (thanks to https://github.com/javatestcase)
66
* fix Tumblr urls, convert to https (thanks to https://github.com/highthunder)
7+
* fix: allow spaces in scope param in OAuth2Accesstoken response
78

89
[5.2.0-java7again]
910
* allow 'null' as callback. It's an optional parameter. Remove "oob" as default (thanks to https://github.com/massongit)

scribejava-core/src/main/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class OAuth2AccessTokenJsonExtractor implements TokenExtractor<OAuth2Acce
1919
private static final Pattern TOKEN_TYPE_REGEX_PATTERN = Pattern.compile("\"token_type\"\\s*:\\s*\"(\\S*?)\"");
2020
private static final Pattern EXPIRES_IN_REGEX_PATTERN = Pattern.compile("\"expires_in\"\\s*:\\s*\"?(\\d*?)\"?\\D");
2121
private static final Pattern REFRESH_TOKEN_REGEX_PATTERN = Pattern.compile("\"refresh_token\"\\s*:\\s*\"(\\S*?)\"");
22-
private static final Pattern SCOPE_REGEX_PATTERN = Pattern.compile("\"scope\"\\s*:\\s*\"(\\S*?)\"");
22+
private static final Pattern SCOPE_REGEX_PATTERN = Pattern.compile("\"scope\"\\s*:\\s*\"([^\"]*?)\"");
2323
private static final Pattern ERROR_REGEX_PATTERN = Pattern.compile("\"error\"\\s*:\\s*\"(\\S*?)\"");
2424
private static final Pattern ERROR_DESCRIPTION_REGEX_PATTERN
2525
= Pattern.compile("\"error_description\"\\s*:\\s*\"([^\"]*?)\"");

scribejava-core/src/test/java/com/github/scribejava/core/extractors/OAuth2AccessTokenJsonExtractorTest.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,36 @@
1313

1414
public class OAuth2AccessTokenJsonExtractorTest {
1515

16-
private static final String RESPONSE = "'{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X\"}'";
1716
private final OAuth2AccessTokenJsonExtractor extractor = OAuth2AccessTokenJsonExtractor.instance();
1817

1918
@Test
2019
public void shouldParseResponse() throws IOException {
21-
final OAuth2AccessToken token = extractor.extract(ok(RESPONSE));
22-
assertEquals(token.getAccessToken(), "I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X");
20+
final OAuth2AccessToken token = extractor.extract(
21+
ok("{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X\"}"));
22+
assertEquals("I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X", token.getAccessToken());
23+
}
24+
25+
@Test
26+
public void shouldParseScopeFromResponse() throws IOException {
27+
OAuth2AccessToken token = extractor.extract(
28+
ok("{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T4X\", "
29+
+ "\"scope\":\"s1\"}"));
30+
assertEquals("I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T4X", token.getAccessToken());
31+
assertEquals("s1", token.getScope());
32+
33+
token = extractor.extract(
34+
ok("{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T5X\", "
35+
+ "\"scope\":\"s1 s2\"}"));
36+
assertEquals("I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T5X", token.getAccessToken());
37+
assertEquals("s1 s2", token.getScope());
38+
39+
token = extractor.extract(
40+
ok("{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T6X\", "
41+
+ "\"scope\":\"s3 s4\", "
42+
+ "\"refresh_token\":\"refresh_token1\"}"));
43+
assertEquals("I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T6X", token.getAccessToken());
44+
assertEquals("s3 s4", token.getScope());
45+
assertEquals("refresh_token1", token.getRefreshToken());
2346
}
2447

2548
@Test(expected = IllegalArgumentException.class)

0 commit comments

Comments
 (0)