10

我对 facebook.logout(context) 的工作方式有点困惑。

因为即使在调用注销之后,我也能够访问需要 auth_token 的信息。那怎么可能呢?我遇到了这个话题,这让我有点困惑:https ://stackoverflow.com/a/6597688/487940

阅读该答案后,这是我的问题:因此,如果用户授予对 [my] 应用程序的访问权限,那么如果他登录到 [official] facebook 应用程序,他将始终通过身份验证?即使我尝试在 [my] 应用程序中调用 facebook.logout(context),他也会登录并且我的应用程序将能够调用 Facebook API?

抱歉,关于我无法理解这种行为。

更新:阅读 Torid 的回复后,我对 facebook.logout() 函数感到困惑。如果不注销用户,此功能的目的是什么?因为,我再也看不到调用这个目的的目的了。它不会注销用户。

4

1 回答 1

8

这里有两件独立的事情:1)您的用户是否已通过 Facebook 验证您的应用程序(具有权限)和 2)您的用户是否已登录 Facebook。

当您的用户第一次使用您的应用程序时需要进行身份验证,并持续到用户明确取消身份验证(例如,通过 Facebook 网络帐户设置 -> 应用程序 -> 应用程序设置)。

每次您的用户启动您的应用程序时,都可能需要登录。但是,如果您使用默认的 SDK authorize(),它会尝试执行单点登录 (SSO),如果 Facebook 应用程序已登录,您的应用程序会自动登录并使用现有的访问令牌。

如果您使用的是 SSO,那么当您进行注销时,这没有任何效果,因为真正的注销将不得不注销 Facebook 应用程序 - 用户可能不喜欢!

您可以通过对表单进行授权来解决此问题

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener());

这避免了 SSO 并强制进行对话登录。当然,这会强制您的用户在每次启动应用程序时登录 - 除非您将登录详细信息/访问令牌保存在幕后(这就是 SDK 所做的 - 检查源代码)。

于 2012-01-09T23:04:06.763 回答