我设置的方式是,当用户第一次访问网站时,它会要求他们登录Facebook。它获得一个访问令牌并在我的站点上创建一个会话。
如果用户在任何时候退出facebook,比如在另一个选项卡中,会话仍然存在于我的应用程序中。
我能看到检测用户是否仍然登录到Facebook的唯一方法是重新请求访问令牌,因为似乎没有办法检查现有的访问令牌是否仍然有效。
我试着简单地做:
file_get_contents('https://graph.facebook.com/me?access_token=xxx')
但是,由于令牌不再有效(因为用户已经注销),file_get_contents返回一个错误,尽管在浏览器中查看此错误会显示oauth异常,但我假设file_get_contents出错是因为HTTP响应代码
我认为你可以这样做:
@$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
这里有很多问题…我想分享一些见解:
-
如果用户在浏览器的一个选项卡中注销FB,他将被注销所有选项卡
-
如果一个FB应用程序已经请求用户的权限,如offline_access,他们可以显示他们想要的任何相关内容,如果他们已经维护了一些FB id和他们自己的id映射。access_token必须用于获取任何信息
-
access_token保持有效,如果你没有明确地要求一个access_token的到期日期。
如果用户更改任何FB凭据, access_token将更改。