已修订问题
我意识到使用响应:$facebook->api('/me?access_token='.$access_token)
将确定您是否需要新的访问令牌。所以我的下面的问题可以简化为:
如果用户尚未取消对该应用的授权,是否有FB批准的方式来获取没有redirect to the auth log的新访问令牌?
旧问题
正如this question所指出的,Facebook(离线)访问令牌因各种原因而失效。 Facebook提供This solution用于重新授权和获取新的离线访问令牌。
但是,该解决方案假设我需要以下行为:
然而,
答案 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.