有没有办法在Android上通过Facebook api注销如果你有Facebook应用程序?

问题描述:

我正在使用Facebook的Android API,一切都按预期工作,但有一个例外。当我离开安装在设备上的Facebook应用程序(这是独立的应用程序,这与API或我的应用程序无关),我在我的Facebook对象上调用logout(),它正确地使Facebook对象无效但下一次我启动它的对象并从Facebook应用中检索登录数据并且登录仍然存在。有没有办法在Android上通过Facebook api注销如果你有Facebook应用程序?

如果我没有在设备上安装Facebook应用程序,一切正常。

我很好奇,如果有一些机制,我忽略迫使Facebook应用程序不坚持登录,或者我坚持不得不告诉我的客户端(这是一个客户端的自定义应用程序,永远不会市场),当他们运行它时,他们必须确保从他们正在运行的设备上卸载Facebook应用程序?

当你说Facebook的Android API,你的意思是Facebook的Android SDK?

如果是这样,当您调用授权时,您可以选择指定是单点登录(SSO)还是OAuth 2.0对话授权。默认值是SSO。如果您使用SSO进行授权,并且Facebook应用程序已存在并已登录,则授权无需在Facebook服务器附近进行即可成功。

如果您不使用SSO并使用OAuth 2.0对话框授权,则用户最初会看到一个登录对话框和一个应用程序授权对话框,并且在成功登录/授权后,SDK会持续保留访问令牌以用于后续授权。

不幸的是,SDK注销不考虑SSO。它执行OAuth 2.0 expiresession并清除访问令牌,但它不会告知Facebook应用程序该用户已注销。所以这意味着当你做下一个授权时(假设它是一个SSO)Facebook应用程序仍然登录,那么授权成功,而不会去Facebook服务器附近。

一种方法是不使用SSO并需要OAuth 2.0对话授权(使用authorize(FORCE_DIALOG_AUTH))。即使Facebook应用程序存在并登录,这也需要用户登录,但它会阻止登录持续。

+0

非常好!是的,我不需要登录来坚持永远。该应用程序专门用于用户在公共空间后用户使用该应用程序,如果用户B仍然从用户A登录,该应用程序实际上会是一个完整的显示限制程序。请您澄清一下,我如何指定如何指定日志的方式 - 它是(SSO与OAuth),以便要求登录每次都发生? –

+0

没关系,我明白你的意思了...... Facebook.FORCE_DIALOG_AUTH是第三个参数,然后它做我所需要的......非常感谢! –