Php 我应该如何处理一个从Facebook注销但仍在我的网站上登录的用户?

Php 我应该如何处理一个从Facebook注销但仍在我的网站上登录的用户?,php,facebook-graph-api,Php,Facebook Graph Api,我的设置方式是,当用户首次访问该网站时,它会要求他们使用Facebook登录。它获取一个访问令牌并在我的站点上创建一个会话 如果用户在任何时候注销facebook,比如在另一个选项卡中,会话仍将存在于我的应用程序中 我能看到的检测用户是否仍然登录Facebook的唯一方法是重新请求访问令牌,因为似乎没有办法检查现有的访问令牌是否仍然有效 我确实试着简单地做: file_get_contents('https://graph.facebook.com/me?access_token=xxx')

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

如果用户在任何时候注销facebook,比如在另一个选项卡中,会话仍将存在于我的应用程序中

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

我确实试着简单地做:

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

但是,由于令牌不再有效(因为用户已注销),file\u get\u contents返回一个错误,尽管在浏览器中查看此内容会显示oauth异常,但我假设file\u get\u contents由于HTTP响应代码而出错,这里有很多问题。。我只想分享一些见解:

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

  • 如果FB应用程序请求用户的权限(如offline_Access),如果他们维护了一些FB id和他们自己的id映射,他们可以向他们显示他们想要的任何相关内容。。当然,获取任何信息都需要访问令牌

  • 如果您没有明确要求使用有效期为的访问令牌,则访问令牌仍然有效

  • 如果用户更改任何FB凭据,则访问令牌将更改。FB应用程序无法检测到的


  • 你可以这样做,我想:

    @$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
    

    另外,我更希望不必经历从查询字符串获取代码然后发送代码的整个两步过程。我希望我的站点能够检测到当前访问令牌不再有效,并通知用户他们必须重新登录Facebook1。是的,我知道,当我说session时,我指的是我自己的申请session2。但是如果一个用户点击了我的页面,然后进入另一个选项卡,碰巧从Facebook注销,返回到我的站点,并尝试执行一个操作,该操作要求应用程序说为该用户写入状态,应用程序需要知道该用户已从Facebook注销,以便它可以请求一个新的访问令牌