注销如何在Facebook SDK Android中运行

时间:2012-01-09 22:22:15

标签: android facebook facebook-authentication facebook-android-sdk

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

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

在阅读完答案之后,这是我的问题:如果用户授予访问[我的]应用程序的权限,如果他登录[官方] Facebook应用程序,他将始终进行身份验证?即使我尝试在[my]应用程序中调用facebook.logout(context),他也会登录,我的应用程序将能够调用Facebook API吗?'

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

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

1 个答案:

答案 0 :(得分:8)

这里有两个独立的事情:1)您的用户是否已经对Facebook的应用程序(具有权限)进行了身份验证,以及2)您的用户是否已登录到Facebook。

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

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

如果您正在使用SSO,当您进行注销时,这没有任何效果,因为真正的注销必须注销Facebook应用 - 用户可能不喜欢!

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

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

避免SSO并强制对话登录。当然,这会强制您的用户每次启动您的应用程序时都会登录 - 除非您保存登录详细信息/访问令牌 封面(这是SDK的作用 - 检查来源)。