X Tutup
Skip to content

Commit 51725d3

Browse files
committed
Merge branch 'MrNeuronix-master'
2 parents 17e9220 + 85e8e62 commit 51725d3

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[SNAPSHOT]
22
* omit the client_secret parameter if it is an empty string while refreshing token (thanks to https://github.com/KungfuPancake)
33
* allow perms to be specified in Flickr Api (read, write, or delete) (thanks to https://github.com/rogerhu)
4+
* OdnoklassnikiService should consider params in a body while signing the request (thanks to https://github.com/MrNeuronix)
45

56
[4.1.0]
67
* make client_secret optional in OAuth2 while requesting AccessToken (if set to null, it's not required by OAuth2 specs)

scribejava-apis/src/main/java/com/github/scribejava/apis/LinkedInApi.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public LinkedInApi() {
2020
}
2121

2222
/**
23+
* @param scopes scopes
2324
* @deprecated use {@link #instance(java.lang.String...) }
2425
*/
2526
@Deprecated

scribejava-apis/src/main/java/com/github/scribejava/apis/service/OdnoklassnikiServiceImpl.java

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package com.github.scribejava.apis.service;
22

3-
import java.io.UnsupportedEncodingException;
4-
import java.net.URLDecoder;
5-
import org.apache.commons.codec.CharEncoding;
6-
import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
73
import com.github.scribejava.core.builder.api.DefaultApi20;
84
import com.github.scribejava.core.model.OAuth2AccessToken;
95
import com.github.scribejava.core.model.OAuthConfig;
106
import com.github.scribejava.core.model.OAuthRequest;
7+
import com.github.scribejava.core.model.Parameter;
8+
import com.github.scribejava.core.model.ParameterList;
119
import com.github.scribejava.core.oauth.OAuth20Service;
12-
import java.util.Arrays;
10+
11+
import org.apache.commons.codec.CharEncoding;
12+
13+
import java.io.UnsupportedEncodingException;
14+
import java.net.URLDecoder;
15+
import java.util.Collections;
16+
import java.util.List;
17+
18+
import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
1319

1420
public class OdnoklassnikiServiceImpl extends OAuth20Service {
1521

@@ -23,20 +29,19 @@ public void signRequest(OAuth2AccessToken accessToken, OAuthRequest request) {
2329
try {
2430
final String tokenDigest = md5Hex(accessToken.getAccessToken() + getConfig().getApiSecret());
2531

26-
final String completeUrl = request.getCompleteUrl();
27-
final int queryIndex = completeUrl.indexOf('?');
28-
if (queryIndex != -1) {
29-
final String[] params = completeUrl.substring(queryIndex + 1).split("&");
30-
Arrays.sort(params);
31-
final StringBuilder builder = new StringBuilder();
32-
for (String param : params) {
33-
builder.append(param);
34-
}
35-
36-
final String sigSource = URLDecoder.decode(builder.toString(), CharEncoding.UTF_8) + tokenDigest;
37-
request.addQuerystringParameter("sig", md5Hex(sigSource).toLowerCase());
32+
final ParameterList queryParams = request.getQueryStringParams();
33+
queryParams.addAll(request.getBodyParams());
34+
final List<Parameter> allParams = queryParams.getParams();
35+
36+
Collections.sort(allParams);
37+
final StringBuilder builder = new StringBuilder();
38+
for (Parameter param : allParams) {
39+
builder.append(param.getKey()).append('=').append(param.getValue());
3840
}
3941

42+
final String sigSource = URLDecoder.decode(builder.toString(), CharEncoding.UTF_8) + tokenDigest;
43+
request.addQuerystringParameter("sig", md5Hex(sigSource).toLowerCase());
44+
4045
super.signRequest(accessToken, request);
4146
} catch (UnsupportedEncodingException unex) {
4247
throw new IllegalStateException(unex);

0 commit comments

Comments
 (0)
X Tutup