我该如何处理用户退出Facebook但仍保留在我的网站上的用户?

时间:2011-09-14 07:05:27

标签: php facebook-graph-api

我设置的方式是,当用户首次访问该网站时,它会要求他们使用Facebook登录。它获取访问令牌并在我的站点上创建会话。

如果用户在任何时候退出Facebook,请说在另一个标签中,会话仍然存在于我的应用程序中。

我可以看到检测用户是否仍然登录Facebook的唯一方法是重新请求访问令牌,因为似乎没有办法检查现有访问令牌是否仍然有效。

我确实尝试过:

file_get_contents('https://graph.facebook.com/me?access_token=xxx')

但是,由于令牌不再有效(因为用户已经注销),file_get_contents会返回错误,但是,在浏览器中查看此内容会显示oauth异常,但我假设file_get_contents由于HTTP响应代码而错误< / p>

2 个答案:

答案 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. 如果用户在浏览器的1个标签中注销FB,他将从所有标签中注销

  2. 如果FB应用程序要求获得用户的权限,例如offline_acess,他们可以向他们展示他们想要的任何相关内容,如果他们保持了一些fb id和他们自己的id映射的痛苦..应该需要access_token获取任何信息

  3. 如果您没有明确要求带有失效日期的access_token,则access_token仍然有效。

  4. 如果用户更改任何FB凭据,access_token会更改。一个FB应用程序无法检测