不重定向到身份验证日志的新访问令牌


New access token without redirect to auth log

修订问题

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

如果用户没有取消对应用程序的授权,是否有FB批准的方法可以在不重定向到授权日志的情况下获得新的访问令牌?


旧问题

正如在这个问题中指出的,Facebook(离线)访问令牌由于各种原因而过期。此解决方案由Facebook提供,用于重新授权和获取新的离线访问令牌。

然而,该解决方案假设我想要以下行为:

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

然而,

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

如果您的应用程序得到了用户的授权,您可以使用以下javascript获得新的访问令牌:

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

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

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

我的问题说,理想情况下,这将由服务器端处理。不幸的是,这个php:的行为

$access_token = $facebook->getAccessToken();

与Javascript SDK生成的访问令牌响应不同。请参阅此问题。