【问题标题】:Different Facebook access token JavaScript SDK不同的 Facebook 访问令牌 JavaScript SDK
【发布时间】:2012-07-09 17:24:13
【问题描述】:

我对来自 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/ 并单击其中一个图形链接,我注意到那里生成的访问令牌总是与我从代码中检索到的不同。例如,graph api 文档中当前的 access token 是

“AAAAAAITEghMBAMwuyHZCO3VOAvCm9hHpaZC9PGV9238ixsZB7zSfuplZBTZCLRj6cEViZADJlVcjOfInwvcbhqu3XBF1w4ZAxvPbexcGQZAYzb4bHAKsMbLF”

控制台日志中的那个是

“AAAG0ZCFantJ8BAAFcMdDOyDyT4OBtjrvULEaS2o94gZAU7U1xITaogFXCZBghQP8G9bjEh3XSCATQOZCUSZCuNWFvEfypIAmcz9bkbk5qRBlHUZAOE4guW”

我想我可能做错了。谁能帮我解释一下如何以正确的方式从图形 API 中检索数据?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 那么如何使用这些访问令牌从图形 API 中检索数据?
    【解决方案2】:

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

    1. 当要提交帖子时,将用户重定向到 facebook(使用一些参数,如 appid、app-secret、auth-token 和 重定向网址);
    2. Facebook 将要求用户使用其凭据登录。
    3. 当用户登录时,facebook 将重定向回redirect-url。 (使用授权令牌和新的授权码)。
    4. 然后我们应该使用这个 auth-code、app-id 和 app-secret 并获取 user-access-token。 (这是通过对 网址 https://graph.facebook.com/oauth/access_token?client_id=client_id&redirect_uri=redirect_uri&client_secret=client_secret&code=auth-code 这将返回用户令牌和令牌的到期时间
    5. 然后我们可以使用此用户访问令牌发布到 fb。

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

    【讨论】:

      【解决方案3】:

      首先使用您的 authToken 运行此 URL:

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

      您几乎可以肯定只会在响应中看到基本权限,这就是为什么您没有从对用户相册的调用中获取数据的原因。

      然后,您需要通过Authentication Process 运行您的用户,确保您使用request the permissions you need(在您的情况下可能是“user_photos”)。

      更多信息可在这两个链接中找到。祝你好运!

      【讨论】:

      • 嘿,谢谢..我总是得到空白数据的原因是因为它没有在权限中列出..起初,我以为只要我有访问令牌,我就可以访问任何用户的信息..非常感谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多