diff --git a/src/main/java/org/dmfs/oauth2/client/tokens/JsonAccessToken.java b/src/main/java/org/dmfs/oauth2/client/tokens/JsonAccessToken.java index 36b2f51..5793d83 100644 --- a/src/main/java/org/dmfs/oauth2/client/tokens/JsonAccessToken.java +++ b/src/main/java/org/dmfs/oauth2/client/tokens/JsonAccessToken.java @@ -135,6 +135,16 @@ public Optional extraParameter(final String parameterName) return new NullSafe<>(mTokenResponse.optString(parameterName, null)); } + /** + * Returns the raw token response given by OAuth provider. + * + * @return An {@link org.json.JSONObject}. + * + */ + public JSONObject rawResponse() + { + return new JSONObject(mTokenResponse.toMap()); + } /** * A {@link Function} which converts a String into an {@link OAuth2Scope}. diff --git a/src/test/java/org/dmfs/oauth2/client/tokens/JsonAccessTokenTest.java b/src/test/java/org/dmfs/oauth2/client/tokens/JsonAccessTokenTest.java index 66ca2ec..2bf30f4 100644 --- a/src/test/java/org/dmfs/oauth2/client/tokens/JsonAccessTokenTest.java +++ b/src/test/java/org/dmfs/oauth2/client/tokens/JsonAccessTokenTest.java @@ -62,6 +62,15 @@ public void testCustomPayload() throws Exception .extraParameter("idToken"), is(present(Matchers.hasToString("id_token_value")))); } + @Test + public void testRawResponse() throws Exception + { + JSONObject originalJsonObject = new JSONObject("{\"idToken\":\"id_token_value\"}"); + assertThat(new JsonAccessToken(originalJsonObject, dummy(OAuth2Scope.class)) + .rawResponse(), is(originalJsonObject))); + } + + @Test public void testCustomPayloadWithNonExistingParameter() throws Exception