以编程方式清除 Android 上的 Facebook SDK 4.0 会话
Posted
技术标签:
【中文标题】以编程方式清除 Android 上的 Facebook SDK 4.0 会话【英文标题】:Programmatically clear Facebook SDK 4.0 session on Android 【发布时间】:2016-11-12 12:21:27 【问题描述】:我将 Facebook 登录集成到我的应用程序中,它运行良好。问题在于注销。
当我在我的设备上打开 Facebook 应用程序时,我可以执行注销,这样下次我打开它时,它会询问我是否想用我常用的帐户登录,用另一个帐户登录,甚至创建一个新账户。很好,这是意料之中的。
但这不会发生在我的应用程序中。我的意思是,如果用户打开我的应用程序,点击“注销”并运行下面的代码
// Initialize Facebook SDK on the beginning.
FacebookSdk.sdkInitialize(this.getApplicationContext());
...
// Logout on user choice.
LoginManager.getInstance().logOut();
下次他回到应用程序并点击登录时,他将直接使用他的帐户登录,不会询问他要登录的每个帐户。
我认为我需要清除所有保存的信息(令牌?),这些信息正在用于此直接登录。它是否正确?如果是,我该怎么做?
谢谢,
【问题讨论】:
【参考方案1】:我正在使用这种方法。它适用于 SDK 4.6.0,但我想它应该与 4.0 相同。如果没有,只需升级;)
public void logoutFromFacebook(final LogoutFacebookListener listener)
if (AccessToken.getCurrentAccessToken() == null)
// already logged out
listener.onLoggedOutFromFacebook();
return;
new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
.Callback()
@Override
public void onCompleted(GraphResponse graphResponse)
LoginManager.getInstance().logOut();
listener.onLoggedOutFromFacebook();
).executeAsync();
听众:
public interface LogoutFromFacebookListener
void onLoggedOutFromFacebook();
【讨论】:
改进了一点...现在应用程序正在请求用户再次确认 Facebook 权限,但仍然是同一个用户。 @DaniloSetton Ok :) 如果完成,请接受我的回答以关闭此问题。 实际上我还不能用不同的用户登录...它仍然将我重定向到“直接登录”,唯一的区别是我需要再次授予权限... @DaniloSetton 这很奇怪。您是否尝试将 sdk 版本更新到 4.6.0 ? @DaniloSetton 顺便说一句,我忘了提一下,这段代码只在 Facebook 网站内有效。您无法在 Facebook 应用程序中注销用户,您在那里没有权限。【参考方案2】:就像当您尝试登录时,facebook sdk 在您的情况下使用您的网络浏览器(chrome 等)。当您致电LoginManager.getInstance().logOut();
时,您只是从 facebook sdk 注销,但您仍然在您的网络浏览器中保持登录状态。 The android and ios SDKs don't currently support re-authentication.希望他们将来会这样;)
【讨论】:
这让我走上了正确的道路。我调用了logout
SDK 方法并 转到 iOS 设置 > Safari > 清除历史记录和网站数据。这使我可以使用其他用户登录。感谢您提供此信息!以上是关于以编程方式清除 Android 上的 Facebook SDK 4.0 会话的主要内容,如果未能解决你的问题,请参考以下文章