|
7 | 7 | import android.util.Log;
|
8 | 8 |
|
9 | 9 | import com.google.gson.Gson;
|
| 10 | +import com.google.gson.JsonSyntaxException; |
10 | 11 |
|
11 | 12 | import com.facebook.react.bridge.Arguments;
|
12 | 13 | import com.facebook.react.bridge.Callback;
|
@@ -400,10 +401,27 @@ private WritableMap accessTokenResponse(
|
400 | 401 | ) {
|
401 | 402 | WritableMap resp = Arguments.createMap();
|
402 | 403 | WritableMap response = Arguments.createMap();
|
403 |
| - Map accessTokenMap = new Gson().fromJson(accessToken.getRawResponse(), Map.class); |
404 | 404 |
|
405 | 405 | Log.d(TAG, "Credential raw response: " + accessToken.getRawResponse());
|
406 |
| - |
| 406 | + |
| 407 | + /* Some things return as JSON, some as x-www-form-urlencoded (querystring) */ |
| 408 | + |
| 409 | + Map accessTokenMap = null; |
| 410 | + try { |
| 411 | + accessTokenMap = new Gson().fromJson(accessToken.getRawResponse(), Map.class); |
| 412 | + } catch (JsonSyntaxException e) { |
| 413 | + /* |
| 414 | + failed to parse as JSON, so turn it into a HashMap which looks like the one we'd |
| 415 | + get back from the JSON parser, so the rest of the code continues unchanged. |
| 416 | + */ |
| 417 | + Log.d(TAG, "Credential looks like a querystring; parsing as such"); |
| 418 | + accessTokenMap = new HashMap(); |
| 419 | + accessTokenMap.put("user_id", accessToken.getParameter("user_id")); |
| 420 | + accessTokenMap.put("oauth_token_secret", accessToken.getParameter("oauth_token_secret")); |
| 421 | + accessTokenMap.put("token_type", accessToken.getParameter("token_type")); |
| 422 | + } |
| 423 | + |
| 424 | + |
407 | 425 | resp.putString("status", "ok");
|
408 | 426 | resp.putBoolean("authorized", true);
|
409 | 427 | resp.putString("provider", providerName);
|
|
0 commit comments