如何使用OAuth2.0获取Facebook access_token

时间:2015-03-04 06:34:09

标签: facebook facebook-graph-api access-token facebook-oauth

我已将Facebook登录集成到我的网络应用程序中。 当我通过发送所需的详细信息请求时,我得到“代码”参数,然后我必须将获得的“代码”交换为“access_token”。因为我正在进行HTTP GET调用: -

https://graph.facebook.com/oauth/access_token?
    client_id={app-id}
   &redirect_uri={redirect-uri}
   &client_secret={app-secret}
   &code={code-parameter}

我得到的回应是

HTTP/1.1 200 OK [Content-Type: text/plain; charset=UTF-8, Access-Control-Allow-Origin: *, X-FB-Rev: 1624746, Pragma: no-cache, Cache-Control: private, no-cache, no-store, must-revalidate, Facebook-API-Version: v1.0, Expires: Sat, 01 Jan 2000 00:00:00 GMT, X-FB-Debug: XM3kCi/2T3bPfe2/QRmn08rBwHTn7SkY8iADhkirVCZ4HOKPGH45zK8WWq0/5+KDFdUWwIn7blnjYfy1py6jrQ==, Date: Wed, 04 Mar 2015 06:25:17 GMT, Connection: keep-alive, Content-Length: 245]

在响应中,我没有获得进一步进入应用程序所需的access_token参数。 根据Facebook文档的回应应该看起来像

access_token={access-token}&expires={seconds-til-expiration}

对此的任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

最后设法获得了答案的解决方案.Facebook给出了access_token,但需要使用entityutils对象检索,然后转换为UTF-8类型。这些代码对我有用,我能够得到来自Facebook API响应的access_token对象。

HttpGet request = new HttpGet(FBAPI_HITURL.toString());
HttpResponse response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");

responseString将包含“access_token = {access-token}& expires = {seconds-til-expiration}”

格式的回复