android - 在 Facebook SDK Android 中注销是如何工作的

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

我对 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/

相关文章:

java - Fragment Android 背后的暗淡和模糊背景

facebook - 如何从 Facebook 的广告 API 获取像素/站外转化统计数据?

php - Facebook Authenticate 如何让我识别用户身份?

安卓 : How to get larger profile pic from Facebook using FirebaseAuth?

java - 如何解决Android更新不同数据库的问题

android - 向后兼容性和 Android Open Accessory 库

加载失败的android虚拟设备

android - android SDK 3.0 如何发帖到Facebook好友墙

facebook - Facebook 如何存储用户的好友?

android - Firebase Android 身份验证失败 : expired_token (Auth token is expired)