我设置的方式是,当用户首次访问该网站时,它会要求他们使用Facebook登录。它获取访问令牌并在我的站点上创建会话。
如果用户在任何时候退出Facebook,请说在另一个标签中,会话仍然存在于我的应用程序中。
我可以看到检测用户是否仍然登录Facebook的唯一方法是重新请求访问令牌,因为似乎没有办法检查现有访问令牌是否仍然有效。
我确实尝试过:
file_get_contents('https://graph.facebook.com/me?access_token=xxx')
但是,由于令牌不再有效(因为用户已经注销),file_get_contents会返回错误,但是,在浏览器中查看此内容会显示oauth异常,但我假设file_get_contents由于HTTP响应代码而错误< / p>
答案 0 :(得分:2)
我认为你可以这样做:
@$data=file_get_contents('https://graph.facebook.com/me?access_token=xxx');
foreach ($http_response_header as $rh) if (substr($rh, 0, 4)=='HTTP') list(,$status,)=explode(' ', $rh, 3);
if ($status==200 && $data)
//Token is good, parse data
else
//Token is no good
答案 1 :(得分:0)
这里有很多问题......我只想分享一些见解:
如果用户在浏览器的1个标签中注销FB,他将从所有标签中注销
如果FB应用程序要求获得用户的权限,例如offline_acess,他们可以向他们展示他们想要的任何相关内容,如果他们保持了一些fb id和他们自己的id映射的痛苦..应该需要access_token获取任何信息
如果您没有明确要求带有失效日期的access_token,则access_token仍然有效。
如果用户更改任何FB凭据,access_token会更改。一个FB应用程序无法检测