From 3a3d0e5cd5ddbfb109d7b89b50df8cd319e2fc98 Mon Sep 17 00:00:00 2001 From: "John W. Phillips" Date: Thu, 10 May 2012 17:51:15 -0700 Subject: [PATCH] Facebook implementation of OAuth2Operations API method extendAccess(..) to request long-lived access token given a short-lived one --- .../connect/FacebookOAuth2Template.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/spring-social-facebook/src/main/java/org/springframework/social/facebook/connect/FacebookOAuth2Template.java b/spring-social-facebook/src/main/java/org/springframework/social/facebook/connect/FacebookOAuth2Template.java index d45690afd..43849fb34 100644 --- a/spring-social-facebook/src/main/java/org/springframework/social/facebook/connect/FacebookOAuth2Template.java +++ b/spring-social-facebook/src/main/java/org/springframework/social/facebook/connect/FacebookOAuth2Template.java @@ -23,6 +23,7 @@ import org.springframework.social.oauth2.AccessGrant; import org.springframework.social.oauth2.OAuth2Template; import org.springframework.social.support.ClientHttpRequestFactorySelector; +import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -38,6 +39,22 @@ public FacebookOAuth2Template(String clientId, String clientSecret) { super(clientId, clientSecret, "https://www.facebook.com/dialog/oauth", "https://graph.facebook.com/oauth/access_token"); } + @Override + public AccessGrant extendAccess(String refreshToken, String scope, MultiValueMap additionalParameters) { + MultiValueMap params = new LinkedMultiValueMap(); + params.set("client_id", clientId); + params.set("client_secret", clientSecret); + params.set("fb_exchange_token", refreshToken); + if (scope != null) { + params.set("scope", scope); + } + params.set("grant_type", "fb_exchange_token"); + if (additionalParameters != null) { + params.putAll(additionalParameters); + } + return postForAccessGrant(accessTokenUrl, params); + } + @Override protected RestTemplate createRestTemplate() { RestTemplate restTemplate = new RestTemplate(ClientHttpRequestFactorySelector.getRequestFactory());