2012-09-29 149 views
1

只是想了解Facebook登录背后的理念。Facebook登录后注册用户名登录

  1. 如果我登录到Facebook上我的网站上挑选了这条,并自动记录我进来。
  2. 如果我登录了Facebook的话,我不是在Facebook的身份验证的,网站仍然有效
  3. 如果我通过我的网站或Facebook登录我已通过身份验证,我可以使用Facebook或我的网站作为已验证的用户
  4. 如果我然后退出Facebook,我的应用程序仍然通过身份验证,但不是Facebook。
  5. 如果我退出我的应用程序并杀死所有会话并手动删除cookie,我可以成功注销。

我在登出后都遇到的问题是,$facebook->getUser();getAccessToken();仍然保留我使用的ID和令牌。这些来自哪里?

我使用的PHP SDK

回答

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确认你的身份并重定向到ap折叠
  6. 申请再次

验证你为了解决这个问题,您的主页应该不会自动进行身份验证。应该有一个用户必须点击的按钮 - 例如“使用Facebook登录”,然后才能启动Facebook身份验证。

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