@Override
public void signRequest(String accessToken, OAuthRequest request) {
request.addQuerystringParameter("session_key", accessToken);
request.addQuerystringParameter("app_id", getApiKey());
final String completeUrl = request.getCompleteUrl();
try {
final String clientSecret = getApiSecret();
final int queryIndex = completeUrl.indexOf('?');
if (queryIndex != -1) {
final String urlPart = completeUrl.substring(queryIndex + 1);
final Map<String, String> map = new TreeMap<>();
for (String param : urlPart.split("&")) {
final String[] parts = param.split("=");
map.put(parts[0], (parts.length == 1) ? "" : parts[1]);
}
final StringBuilder urlNew = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
urlNew.append(entry.getKey());
urlNew.append('=');
urlNew.append(entry.getValue());
}
final String sigSource = URLDecoder.decode(urlNew.toString(), "UTF-8") + clientSecret;
request.addQuerystringParameter("sig", md5(sigSource));
}
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
}