From 5e76ed9f633b6bc1dc09f7808bc4651fa925336d Mon Sep 17 00:00:00 2001 From: Ilia Naryzhny Date: Sat, 30 Jan 2021 23:06:29 -0800 Subject: [PATCH] Fix sign for OK: decode is not needed and break sign for special cases --- .../apis/odnoklassniki/OdnoklassnikiOAuthService.java | 6 +----- .../apis/odnoklassniki/OdnoklassnikiServiceTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiOAuthService.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiOAuthService.java index fd1327a6d..743b3d657 100644 --- a/scribejava-apis/src/main/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiOAuthService.java +++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiOAuthService.java @@ -31,7 +31,6 @@ public OdnoklassnikiOAuthService(OdnoklassnikiApi api, String apiKey, String api @Override public void signRequest(String accessToken, OAuthRequest request) { //sig = lower(md5( sorted_request_params_composed_string + md5(access_token + application_secret_key))) - try { final String tokenDigest = md5(accessToken + getApiSecret()); final ParameterList queryParams = request.getQueryStringParams(); @@ -47,13 +46,10 @@ public void signRequest(String accessToken, OAuthRequest request) { .append(param.getValue()); } - final String sigSource = URLDecoder.decode(stringParams.toString(), "UTF-8") + tokenDigest; + final String sigSource = stringParams + tokenDigest; request.addQuerystringParameter("sig", md5(sigSource).toLowerCase()); super.signRequest(accessToken, request); - } catch (UnsupportedEncodingException unex) { - throw new IllegalStateException(unex); - } } public static String md5(String orgString) { diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiServiceTest.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiServiceTest.java index f4bfbccac..070389412 100644 --- a/scribejava-apis/src/test/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiServiceTest.java +++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/odnoklassniki/OdnoklassnikiServiceTest.java @@ -29,6 +29,16 @@ public void testSigGeneration() { final OAuthRequest request = new OAuthRequest(Verb.GET, URL); service.signRequest(accessToken, request); assertEquals("96127f5ca29a8351399e94bbd284ab16", findParam(request.getQueryStringParams(), "sig")); + + final OAuthRequest request2 = new OAuthRequest(Verb.GET, URL); + request2.addQuerystringParameter("testsimpleparam", "simplevalue"); + service.signRequest(accessToken, request2); + assertEquals("b5355cfc4683869e802747d8aa8acf3f", findParam(request2.getQueryStringParams(), "sig")); + + final OAuthRequest request3 = new OAuthRequest(Verb.GET, URL); + request3.addQuerystringParameter("testsimpleparam", "complex+value%20"); + service.signRequest(accessToken, request3); + assertEquals("229fd8a3fbc42cf545627e6ea719c57d", findParam(request3.getQueryStringParams(), "sig")); } private static String findParam(ParameterList list, String key) {