2011-09-14 26 views
0

我设置它的方式是,当用户第一次访问该网站时,它会要求他们使用Facebook登录。它获取访问令牌并在我的网站上创建会话。我应该如何处理用户注销Facebook,但仍然登录到我的网站?

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

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

我也尝试简单地做:

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

,但由于令牌不再有效(作为用户已注销)的file_get_contents返回一个错误,虽然,在浏览器中查看此表示的OAuth例外,但IM假设的file_get_contents是因为HTTP响应代码示数

+0

另外,我宁愿没有去通过从得到一个代码的整个两个步骤查询字符串然后发送关闭。我希望我的网站能够检测到当前的访问令牌不再有效,并通知用户他们必须重新登录到Facebook – Tim

回答

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 
+0

冠军!这是我正在寻找的确切解决方案! – Tim

0

有很多的问题在这里..我只想分享一些见解:

  1. 如果用户在浏览器的1个选项卡中注销FB,他将从所有选项卡注销

  2. 如果FB应用程序询问用户的权限(如offline_acess),他们可以向他们显示他们想要的任何相关内容保持FB ID的一些疼痛和自己的ID映射..应需要获取任何信息ofcourse

  3. 的的access_token保留的access_token有效的,如果你还没有明确的要求与到期日的..的access_token

  4. 如果用户更改任何FB凭证,则

    access_token会更改。其中FB应用程序无法检测

+0

1.是的,我知道,当我说会话时,我的意思是我自己的应用程序会话 – Tim

+0

2.但是,如果用户点击我的页面,然后例如进入另一个选项卡并恰好从Facebook注销,返回到我的网站,并尝试执行操作,该操作要求应用程序说为该用户写入状态,应用程序需要知道用户已注销Facebook,以便它可以请求新的访问令牌 – Tim

相关问题