我对 facebook.logout(context) 的工作原理有点困惑。
因为即使在调用注销后,我也能够访问需要 auth_token 的信息。那怎么可能呢?我遇到了这个话题,这让我有点困惑:https://stackoverflow.com/a/6597688/487940
阅读该答案后,这是我的问题:那么如果用户授予对 [我的] 应用程序的访问权限,那么如果他登录到 [官方] facebook 应用程序,他将始终通过身份验证吗?即使我尝试在 [我的] 应用程序中调用 facebook.logout(context),他也会登录并且我的应用程序将能够调用 Facebook API?'
抱歉,我无法理解这种行为。
更新: 阅读 Torid 的回复后,我对 facebook.logout() 函数感到困惑。如果不注销用户,此功能的目的是什么?因为,我看不到调用此目的的目的了。它不会注销用户。
最佳答案
这里有两件独立的事情发生:1) 您的用户是否已向 Facebook 验证您的应用程序(具有权限)以及 2) 您的用户是否已登录 Facebook。
用户首次使用您的应用时需要进行身份验证,并一直持续到用户明确取消身份验证(例如通过 Facebook 网络帐户设置 -> 应用 -> 应用设置)。
您的用户每次启动您的应用程序时都可能需要登录。但是,如果您使用默认的 SDK authorize(),它会尝试执行单点登录 (SSO),如果 Facebook 应用已登录,您的应用会自动登录并使用现有的访问 token 。
如果您正在使用 SSO,当您执行注销时,这没有任何效果,因为真正的注销必须注销 Facebook 应用程序 - 用户可能不喜欢!
您可以通过对表单进行授权来解决此问题
authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener());
避免 SSO 并强制对话登录。当然,这会在您每次启动应用程序时强制您的用户登录 - 除非您将登录详细信息/访问 token 保存在 覆盖(这是 SDK 的作用 - 检查来源)。
关于android - 在 Facebook SDK Android 中注销是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795985/