Android:facebook sdk注销问题?

Posted

技术标签:

【中文标题】Android:facebook sdk注销问题?【英文标题】:Android: facebook sdk logout problem? 【发布时间】:2011-08-24 01:25:02 【问题描述】:

您好,我在我的 android 手机上使用 facebook sdk for android 并使用单点登录。当我登录 facebook 应用程序时它工作正常,我的应用程序也登录了。 对于注销,我遇到了困惑。

我实现的方式是从应用程序的用户偏好中恢复访问令牌和过期日期,并检查会话的有效性。如果过期,应用程序调用 facebook.authorized 函数,一旦授权访问令牌和过期日期将再次更新。

在处理注销时,我发现有几件事有点混乱。

1) 当我从 facebook 应用程序注销时,我的应用程序仍然可以通过并请求用户详细信息。虽然,我在我的应用程序上保存的访问令牌与 facebook 应用程序没有关系,但我认为它至少会在请求数据时给我一个错误。但它没有给我错误。

它是否应该是那样的行为。从 Facebook 应用程序中退出不会影响我存储在应用程序中的访问令牌。

2) 当我从我的应用程序而不是 facebook 应用程序注销时,facebook 应用程序不会自动注销。

【问题讨论】:

【参考方案1】:

我也有同样的问题。我正在考虑创建一个“isLogged”变量并将其存储起来,以便当有人注销并重新启动应用程序时,它甚至不会验证用户是否已绕过 facebook 的会话验证。

【讨论】:

【参考方案2】:

Facebook 访问令牌和您的应用访问令牌是独立且不同的,因此完全有可能一个有效并允许访问,而另一个无效并需要重新授权。

如果 Facebook 应用程序已登录但您的应用程序未登录,则 Facebook SDK 将使用现有的 Facebook 应用程序登录信息为您的应用程序获取新的访问令牌,而无需进行身份验证,但这仍然未链接到 Facebook 应用程序登录任何方式的令牌。

如果 Facebook 应用没有安装,或者没有登录,那么 Facebook SDK 会带你到 Facebook 网站做初始认证,但这不会登录 Facebook 应用,因为你的访问之间没有连接令牌和 Facebook 访问令牌。

因此,总而言之-您的理解是正确的。这两个应用程序之间没有交互,除非您的应用程序尝试对用户进行身份验证,然后 Facebook 应用程序将充当代理,只要 Facebook 登录,您就可以在不进行身份验证的情况下获得访问权限。之后,没有进一步的互动以及您观察到的行为是预期的和预期的行为。

【讨论】:

所以如果用户授予对[我的]应用程序的访问权限,如果他登录到[官方] facebook 应用程序,他将始终被验证?即使我尝试在 [我的] 应用程序中调用 facebook.logout(context) ?抱歉,我有点困惑。 是的——只要你的应用有访问Facebook账号的权限,使用Facebook API,并且Facebook官方应用还处于登录状态,那么下次你启动你的应用时,它就会使用Facebook 应用程序获取新的访问令牌并将静默进行身份验证。这就是单点登录的工作方式。 那么,facebook.isSessionValid() 是检查用户是否实际登录的正确方法吗?因为 facebook.isSessionValid() 会返回 true,即使用户已登录。

以上是关于Android:facebook sdk注销问题?的主要内容,如果未能解决你的问题,请参考以下文章

从我的应用程序中注销(使用 facebook android sdk 4.0 开发)并安装 facebook 原生应用程序

facebook android sdk 4.0,从 LoginManager 注销回调的方法

Android Facebook sdk 覆盖登录按钮

以编程方式清除 Android 上的 Facebook SDK 4.0 会话

Android - Facebook SDK 登录

Facebook android SDK重新打开会话