7 Commits
9 changed files with 55 additions and 8 deletions

No files matched your search

+5
View File
@@ -13,3 +13,8 @@
* FIX: Fixed Evernote Api (uses GET for request and access tokens) * FIX: Fixed Evernote Api (uses GET for request and access tokens)
* REFACTOR: URLEncoding stuff. LinkedIn specific decoder is no longer needed * REFACTOR: URLEncoding stuff. LinkedIn specific decoder is no longer needed
* FEATURE: Added Google example * FEATURE: Added Google example
[1.0.9]
* FEATURE: Token made Serializable
* FIX: Google Api encoding issues (thanks @roger and @klakegg)
+1 -1
View File
@@ -4,7 +4,7 @@
<groupId>org.scribe</groupId> <groupId>org.scribe</groupId>
<artifactId>scribe</artifactId> <artifactId>scribe</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.0.8</version> <version>1.0.9</version>
<name>Scribe OAuth Library</name> <name>Scribe OAuth Library</name>
<description>The best OAuth library out there</description> <description>The best OAuth library out there</description>
<url>http://github.com/fernandezpablo85/scribe-java</url> <url>http://github.com/fernandezpablo85/scribe-java</url>
@@ -1,5 +1,7 @@
package org.scribe.builder.api; package org.scribe.builder.api;
import org.scribe.model.*;
public class GoogleApi extends DefaultApi10a public class GoogleApi extends DefaultApi10a
{ {
@Override @Override
@@ -13,4 +15,16 @@ public class GoogleApi extends DefaultApi10a
{ {
return "https://www.google.com/accounts/OAuthGetRequestToken"; return "https://www.google.com/accounts/OAuthGetRequestToken";
} }
@Override
protected Verb getAccessTokenVerb()
{
return Verb.GET;
}
@Override
protected Verb getRequestTokenVerb()
{
return Verb.GET;
}
} }
+5 -1
View File
@@ -1,12 +1,16 @@
package org.scribe.model; package org.scribe.model;
import java.io.Serializable;
/** /**
* Represents an OAuth token (either request or access token) and its secret * Represents an OAuth token (either request or access token) and its secret
* *
* @author Pablo Fernandez * @author Pablo Fernandez
*/ */
public class Token public class Token implements Serializable
{ {
private static final long serialVersionUID = 715000866082812683L;
private final String token; private final String token;
private final String secret; private final String secret;
+4 -1
View File
@@ -1,5 +1,7 @@
package org.scribe.model; package org.scribe.model;
import org.scribe.utils.*;
/** /**
* Represents an OAuth verifier code. * Represents an OAuth verifier code.
* *
@@ -7,6 +9,7 @@ package org.scribe.model;
*/ */
public class Verifier public class Verifier
{ {
private final String value; private final String value;
/** /**
@@ -16,7 +19,7 @@ public class Verifier
*/ */
public Verifier(String value) public Verifier(String value)
{ {
this.value = value; this.value = URLUtils.percentDecode(value);
} }
public String getValue() public String getValue()
@@ -53,6 +53,8 @@ public class OAuth10aServiceImpl implements OAuthService
public Token getRequestToken() public Token getRequestToken()
{ {
OAuthRequest request = new OAuthRequest(config.getRequestTokenVerb(), config.getRequestTokenEndpoint()); OAuthRequest request = new OAuthRequest(config.getRequestTokenVerb(), config.getRequestTokenEndpoint());
request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
if(scope != NO_SCOPE) request.addOAuthParameter(OAuthConstants.SCOPE, scope);
addOAuthParams(request, OAuthConstants.EMPTY_TOKEN); addOAuthParams(request, OAuthConstants.EMPTY_TOKEN);
addOAuthHeader(request); addOAuthHeader(request);
Response response = request.send(); Response response = request.send();
@@ -66,8 +68,6 @@ public class OAuth10aServiceImpl implements OAuthService
request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey()); request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey());
request.addOAuthParameter(OAuthConstants.SIGN_METHOD, signatureService.getSignatureMethod()); request.addOAuthParameter(OAuthConstants.SIGN_METHOD, signatureService.getSignatureMethod());
request.addOAuthParameter(OAuthConstants.VERSION, getVersion()); request.addOAuthParameter(OAuthConstants.VERSION, getVersion());
request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback());
if(scope != NO_SCOPE) request.addOAuthParameter(OAuthConstants.SCOPE, scope);
request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token)); request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token));
} }
@@ -30,7 +30,7 @@ public class HMACSha1SignatureService implements SignatureService
{ {
Preconditions.checkEmptyString(baseString, "Base string cant be null or empty string"); Preconditions.checkEmptyString(baseString, "Base string cant be null or empty string");
Preconditions.checkEmptyString(apiSecret, "Api secret cant be null or empty string"); Preconditions.checkEmptyString(apiSecret, "Api secret cant be null or empty string");
return doSign(baseString, apiSecret + '&' + tokenSecret); return doSign(baseString, URLUtils.percentEncode(apiSecret) + '&' + URLUtils.percentEncode(tokenSecret));
} }
catch (Exception e) catch (Exception e)
{ {
@@ -0,0 +1,21 @@
package org.scribe.model;
import static org.junit.Assert.*;
import org.junit.*;
public class VerifierTest
{
@Test
public void shouldParse()
{
Verifier verifier = new Verifier("p8k%2BGIjIL9PblXq%2BpH6LmT9l");
assertEquals(verifier.getValue(), "p8k+GIjIL9PblXq+pH6LmT9l");
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowErrorForNullString()
{
new Verifier(null);
}
}
@@ -3,7 +3,7 @@ package org.scribe.services;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import org.junit.*; import org.junit.*;
import org.scribe.exceptions.OAuthException; import org.scribe.exceptions.*;
public class HMACSha1SignatureServiceTest public class HMACSha1SignatureServiceTest
{ {
@@ -29,7 +29,7 @@ public class HMACSha1SignatureServiceTest
String apiSecret = "api secret"; String apiSecret = "api secret";
String tokenSecret = "token secret"; String tokenSecret = "token secret";
String baseString = "base string"; String baseString = "base string";
String signature = "cyxvUDZY/5cQBcBiKulaNgnhN/w="; String signature = "uGymw2KHOTWI699YEaoi5xyLT50=";
assertEquals(signature, service.getSignature(baseString, apiSecret, tokenSecret)); assertEquals(signature, service.getSignature(baseString, apiSecret, tokenSecret));
} }