Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Invalid
-
4.1.3, 4.2 Beta1
-
None
-
None
Description
The code below does not work :
/**
- Sets the authCode received from Facebook and exchanges it with the access token.
- @param authCode
- @throws IOException
- @throws ClientProtocolException
*/
public void setFacebookAuthCode(String authCode) throws ClientProtocolException, IOException {
log.info("Retrieving access token using authCode {}", authCode);
URI accessTokenUri = facebookAuth.getAccessTokenUri(authCode);
DefaultHttpClient client = new DefaultHttpClient();
HttpGet accessTokenReq = new HttpGet(accessTokenUri);
HttpResponse response = client.execute(accessTokenReq);
if (response.getStatusLine().getStatusCode() != 200)
throw new IOException(String.format("GET %s throws HTTP Error %d: %s",
accessTokenUri, response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase()));
// Probably due to non-existing Content-Encoding, this one is not working:
List<NameValuePair> data = URLEncodedUtils.parse(response.getEntity());
setFbAccessToken(data.get(0).getValue());
log.info("Access token received, redirecting to Post Status page");
ExternalContext external = FacesContext.getCurrentInstance().getExternalContext();
external.redirect(external.encodeActionURL("/faces/post.xhtml"));
}
I have to use a workaround :
Scanner scanner = new Scanner(response.getEntity().getContent());
ArrayList<NameValuePair> data = new ArrayList<NameValuePair>();
URLEncodedUtils.parse(data, scanner, "UTF-8");
Expected behavior :
Should either default to UTF-8 (recommended) or make it an explicit parameter.
FYI : Code above is taken from FBStatus open source project at https://github.com/soluvas/fbstatus