登录后登录持有用户名的Facebook登录

时间:2012-09-29 22:31:18

标签: php facebook-login

只是想了解facebook登录背后的理念。

  1. 如果我登录Facebook,我的网站会自动登录并自动登录。
  2. 如果我退出Facebook,那么我在Facebook上未经过身份验证,网站仍可正常使用
  3. 如果我通过我的网站或Facebook登录,我通过身份验证,我可以使用Facebook或我的网站作为经过身份验证的用户
  4. 如果我退出Facebook,我的应用程序仍然经过身份验证,但不是Facebook。
  5. 如果我退出我的应用程序并终止所有会话并手动删除cookie,我就可以成功注销。
  6. 我在注销两者后遇到的问题是$facebook->getUser();getAccessToken();仍然维护我使用的ID和令牌。这些来自哪里?

    我正在使用PHP SDK

1 个答案:

答案 0 :(得分:2)

当您使用Facebook登录您的应用程序时,您的应用程序会要求Facebook对您进行身份验证。验证成功后,Facebook会告诉您的应用程序您已通过身份验证。然后,您的应用程序会维护自己的会话。

您在Facebook帐户或应用程序中执行的操作可能无法将更改镜像到彼此。例如,当您注销Facebook帐户时,您的应用程序将无法知道,因为就您的应用程序而言,您已经过身份验证。与此同时,当您退出Facebook时,Facebook没有告诉您的应用程序您已经注销。

应用程序和Facebook(或其他OAuth提供商)维护自己独立的会话。

对于你的问题:

  1. 是的,您的网站将访问者重定向到Facebook中的一个链接,该链接会自动告诉您的客户您已登录。您不再看到提示,因为您在第一次尝试访问时已经授予了应用程序权限使用您的Facebook帐户申请。

  2. 这会因为单独的会话而起作用。当您退出Facebook时,您仍然登录了该应用程序。除非应用程序尝试通过Facebook再次验证您的身份,否则验证将失败。

  3. 这是正确的但是如果您没有登录Facebook就无法登录您的应用程序,除非您有其他方式在没有Facebook的情况下对您的应用程序进行身份验证(如使用链接帐户的替代登录)。但是,在这种情况下,您仍然需要使用登录表登录到Facebook才能登录。您无法通过应用程序登录Facebook。

  4. 这是对的。如果您退出Facebook,则会退出Facebook。由于单独的会话,您还需要注销您的应用程序。

  5. 也正确。

  6. 您的案件可能发生的事情是:

    1. 您已退出申请
    2. 您将被重定向到您的主页
    3. 您的主页会尝试对您进行身份验证,因为您尚未登录
    4. 您被重定向到Facebook
    5. Facebook确认您的身份并重定向到该应用程序
    6. 应用程序再次验证您
    7. 要解决此问题,您的主页不应自动进行身份验证。应该有一个用户必须点击的按钮 - 比如在使用Facebook启动身份验证之前使用“使用Facebook登录”。

      您也不能“强行退出”用户退出Facebook。因此,在使用您的应用程序后,您的用户必须注销您的应用程序和Facebook。如果您的应用程序使用会话cookie,则在浏览器关闭时用户将被注销。