diff --git a/changelog.txt b/changelog.txt index bb0c4a2..09b0e37 100644 --- a/changelog.txt +++ b/changelog.txt @@ -47,3 +47,4 @@ [1.2] * REFACTOR: Moved scope inside OAuthConfig (breaks backwards compatibility) + * FEATURE: Added scopes to Facebook 2.0 Api diff --git a/src/main/java/org/scribe/builder/api/FacebookApi.java b/src/main/java/org/scribe/builder/api/FacebookApi.java index 7d4ae5b..60be476 100644 --- a/src/main/java/org/scribe/builder/api/FacebookApi.java +++ b/src/main/java/org/scribe/builder/api/FacebookApi.java @@ -1,22 +1,34 @@ package org.scribe.builder.api; import org.scribe.model.*; + import org.scribe.utils.*; +import static org.scribe.utils.URLUtils.*; public class FacebookApi extends DefaultApi20 { private static final String AUTHORIZE_URL = "https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s"; + private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=%s"; @Override public String getAccessTokenEndpoint() { return "https://graph.facebook.com/oauth/access_token"; } - + @Override public String getAuthorizationUrl(OAuthConfig config) { Preconditions.checkValidUrl(config.getCallback(), "Must provide a valid url as callback. Facebook does not support OOB"); - return String.format(AUTHORIZE_URL, config.getApiKey(), URLUtils.formURLEncode(config.getCallback())); + + // Append scope if present + if(config.hasScope()) + { + return String.format(SCOPED_AUTHORIZE_URL, formURLEncode(config.getCallback()), formURLEncode(config.getScope())); + } + else + { + return String.format(AUTHORIZE_URL, config.getApiKey(), formURLEncode(config.getCallback())); + } } }