1

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

  1. 如果我登录到 Facebook,我的网站会收到此信息并自动让我登录。
  2. 如果我退出 Facebook,那么我没有在 Facebook 中进行身份验证,网站仍然可以使用
  3. 如果我通过我的网站或 Facebook 登录,我已通过身份验证,我可以使用 Facebook 或我的网站作为经过身份验证的用户
  4. 如果我然后注销 Facebook,我的应用程序仍然经过身份验证,但不是 Facebook。
  5. 如果我注销我的应用程序并终止所有会话并手动删除 cookie,我可以成功注销。

注销两者后我遇到的问题是,$facebook->getUser();仍然getAccessToken();维护我使用的 id 和令牌。这些是从哪里来的?

我正在使用 PHP SDK

4

1 回答 1

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. 也正确。

您的情况可能发生的是:

  1. 您退出了您的应用程序
  2. 你被重定向到你的主页
  3. 您的主页尝试对您进行身份验证,因为您未登录
  4. 您被重定向到 Facebook
  5. Facebook 确认您的身份并重定向到应用程序
  6. 应用程序再次对您进行身份验证

为了解决这个问题,您的主页不应自动验证。应该有一个用户必须单击的按钮 - 在您启动 Facebook 身份验证之前,类似于“使用 Facebook 登录”。

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

于 2012-09-30T00:15:42.010 回答