如何获取Facebook OAuth 2.0访问令牌

3
我正在尝试获取已登录Facebook用户的access_token。
我得到了类似于这样的东西... URL后跟着我要检索的代码。
指南中说要用它来交换access_token... https://graph.facebook.com/oauth/access_token? client_id=XXXXXXXXXXXXXX& redirect_uri=http://www.my-site.com/& client_secret=XXXXXXXXXXXXXXXXXXXXX& code=2.hJFWoMlLf3tLOSos_qNCBg__.3600.1279836000-10000100XXXXXXX|kGwPB4y5K_-ijD9_1CfjSpT-oaY..
我如何使用FB.api或jquery或javascript交换它以获得access_token。
当我将此URL插入地址栏时,我能够看到access_token。
如果有人能告诉我如何使用javascript或jquery检索access_token,我将不胜感激。
谢谢。
2个回答

2

根据 Facebook 官方的说法以及我的 API 使用经验,FB.getSession() 功能已被弃用,如果调用该功能应该会抛出异常。

Facebook 官方曾表示:

FB.getAuthResponse 方法是 FB.getSession 方法的替代品,在迁移到 OAuth 2.0 后 FB.getSession 已被弃用。

因此,你应该使用 getLoginStatus 回调函数 -


FB.getLoginStatus(function(response) {
   var token = response.authResponse.accessToken;
});

//Example structure of response object
var eg =
{
    status: 'connected',
    authResponse: {
        accessToken: '...',
        expiresIn:'...',
        signedRequest:'...',
        userID:'...'
    }
};

来源: http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

FB.getLoginStatus() 允许您确定用户是否已登录到 Facebook 并且是否授权您的应用程序。它还可用于检查用户在 Facebook 上的登录状态,并更改应用程序的行为。

此方法返回一个响应对象,其中包含有关用户当前登录状态的信息。如果用户已登录并且已授权您的应用程序,则响应对象将包含有关用户的详细信息。


1
如果您正在使用JavaScript SDK,则在用户登录后,在JavaScript代码中获取访问令牌就像这样简单:
FB.getSession().access_token

然而,如果用户已注销,则getSession可能返回null,因此正确的方法是在访问令牌之前首先检查是否为null。
var session = FB.getSession();
if(session != null) { // user is still logged in
    console.log(session.access_token);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接