只是想了解facebook登录背后的理念。
我在注销两者后遇到的问题是$facebook->getUser();
和getAccessToken();
仍然维护我使用的ID和令牌。这些来自哪里?
我正在使用PHP SDK
答案 0 :(得分:2)
当您使用Facebook登录您的应用程序时,您的应用程序会要求Facebook对您进行身份验证。验证成功后,Facebook会告诉您的应用程序您已通过身份验证。然后,您的应用程序会维护自己的会话。
您在Facebook帐户或应用程序中执行的操作可能无法将更改镜像到彼此。例如,当您注销Facebook帐户时,您的应用程序将无法知道,因为就您的应用程序而言,您已经过身份验证。与此同时,当您退出Facebook时,Facebook没有告诉您的应用程序您已经注销。
应用程序和Facebook(或其他OAuth提供商)维护自己独立的会话。
对于你的问题:
是的,您的网站将访问者重定向到Facebook中的一个链接,该链接会自动告诉您的客户您已登录。您不再看到提示,因为您在第一次尝试访问时已经授予了应用程序权限使用您的Facebook帐户申请。
这会因为单独的会话而起作用。当您退出Facebook时,您仍然登录了该应用程序。除非应用程序尝试通过Facebook再次验证您的身份,否则验证将失败。
这是正确的但是如果您没有登录Facebook就无法登录您的应用程序,除非您有其他方式在没有Facebook的情况下对您的应用程序进行身份验证(如使用链接帐户的替代登录)。但是,在这种情况下,您仍然需要使用登录表登录到Facebook才能登录。您无法通过应用程序登录Facebook。
这是对的。如果您退出Facebook,则会退出Facebook。由于单独的会话,您还需要注销您的应用程序。
也正确。
您的案件可能发生的事情是:
要解决此问题,您的主页不应自动进行身份验证。应该有一个用户必须点击的按钮 - 比如在使用Facebook启动身份验证之前使用“使用Facebook登录”。
您也不能“强行退出”用户退出Facebook。因此,在使用您的应用程序后,您的用户必须注销您的应用程序和Facebook。如果您的应用程序使用会话cookie,则在浏览器关闭时用户将被注销。