不同的Facebook访问令牌JavaScript SDK

时间:2012-07-10 08:56:27

标签: facebook facebook-graph-api facebook-javascript-sdk oauth-2.0

我对来自facebook的访问令牌非常困惑。我是如何获取用户的访问令牌并使用它从图API中获取数据

window.fbAsyncInit = function() {
    FB.init({
        appId       : 'app ID',
        status      : true, 
        cookie      : true,
        xfbml       : true,
        oauth       : true,     
    });     
    FB.getLoginStatus(getStatus);    
    FB.Event.subscribe('auth.authResponseChange', getStatus);

    function getStatus(response) {
        if ( response.status === 'connected' ) {
            var accessToken = response.authResponse.accessToken;
            console.log("accessToken = " + accessToken);

            $.ajax({
                dataType    : "jsonp",
                type        : "GET",
                url     :   "https://graph.facebook.com/me/albums?access_token=" + accessToken,
                success : function(data) {
                    $.each(data, function(index, value) {
                        console.log(index + ": " + value);  
                    })
                }
            });                     
        }   
    }   
};

但是,我总是得到一个空数据。在我访问图形API文档后https://developers.facebook.com/docs/reference/api/并单击其中一个图形链接,我注意到在那里生成的访问令牌总是与我从代码中检索的不同。例如,图api文档中的当前访问令牌是

“AAAAAAITEghMBAMwuyHZCO3VOAvCm9hHpaZC9PGV9238ixsZB7zSfuplZBTZCLRj6cEViZADJlVcjOfInwvcbhqu3XBF1w4ZAxvPbexcGQZAYzb4bHAKsMbLF”

,控制台日志中的那个是

“AAAG0ZCFantJ8BAAFcMdDOyDyT4OBtjrvULEaS2o94gZAU7U1xITaogFXCZBghQP8G9bjEh3XSCATQOZCUSZCuNWFvEfypIAmcz9bkbk5qRBlHUZAOE4guW”

我认为我可能以错误的方式做到了这一点。任何人都可以帮我解释如何以正确的方式从图API中检索数据吗?

任何形式的帮助将不胜感激。在此先感谢:)

3 个答案:

答案 0 :(得分:2)

首先使用您的authToken运行此网址:

https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN

您几乎肯定只会在回复中看到基本权限,这就是您无法通过拨打用户专辑获取数据的原因。

然后,您希望通过Authentication Process运行您的用户,确保request the permissions you need(可能是' user_photos'在您的情况下)。

这两个链接提供了更多信息。祝你好运!

答案 1 :(得分:0)

访问令牌将永远不会相同。所以这种行为是正确的。

回到你的问题,我认为它主要与范围有关。

答案 2 :(得分:0)

我使用facebook c#sdk开发了一个应用程序,在那个应用程序中我这样做了:

  
      
  1. 当要提交帖子时,将用户重定向到facebook(带有appid,app-secret,auth-token等参数)   重定向-URL);
  2.   
  3. Facebook将要求用户使用他的凭据登录。
  4.   
  5. 当用户登录时,Facebook将重定向回redirect-url。 (使用authtoken和新的auth-code)。
  6.   
  7. 然后我们应该使用这个auth-code,app-id和app-secret来获取用户访问令牌。 (这是通过休息api调用来完成的   网址   https://graph.facebook.com/oauth/access_token?client_id=client_id&redirect_uri=redirect_uri&client_secret=client_secret&code=auth-code   这将返回令牌的用户令牌和到期时间
  8.   
  9. 然后我们可以使用此用户访问令牌发布到fb。
  10.   

最初我误解了auth-code并将其用作用户访问令牌,我总是将结果作为未经授权的令牌。 请检查这是否对您有所帮助。