新的访问令牌,无需重定向到auth日志

时间:2012-01-15 06:24:04

标签: php javascript facebook-graph-api facebook

已修订问题

我意识到使用响应:$facebook->api('/me?access_token='.$access_token)将确定您是否需要新的访问令牌。所以我的下面的问题可以简化为:

如果用户尚未取消对该应用的授权,是否有FB批准的方式来获取没有redirect to the auth log的新访问令牌?


旧问题

正如this question所指出的,Facebook(离线)访问令牌因各种原因而失效。 Facebook提供This solution用于重新授权和获取新的离线访问令牌。

但是,该解决方案假设我需要以下行为:

  1. 将我的用户重定向到身份验证对话框
  2. 如果他们没有取消我的应用程序的授权,我会自动获得一个新的访问令牌
  3. 如果他们已经取消了我的应用程序的授权,他们将获得一个auth对话框来重新授权。
  4. 然而,

    • 如果用户尚未取消授权我的应用,我想要一个新的访问令牌。
    • 如果用户,我想要一个身份验证对话框(也不是新的访问令牌)。
    • 理想情况下,这可以在PHP中完成,无需重定向到auth对话框

1 个答案:

答案 0 :(得分:0)

如果您的应用已获得用户授权,则可以使用此javascript获取新的访问令牌:

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            user_id = response.authResponse.userID;
            access_token = response.authResponse.accessToken;
        }
     }

这不会提示用户重定向到auth日志。 Facebook getLoginStatus中记录的简单内容。

这当然是行不通的,除非用户登录Facebook,授权你的应用程序,并访问你的页面(为了我的目的,这个假设很好)。但是您可以要求offline_access权限并存储新的访问密钥以供以后使用。

我的问题理想地表示这将在服务器端处理。不幸的是,这个php的行为:

$access_token = $facebook->getAccessToken();

与Javascript SDK生成的访问令牌响应不同。 See this question.