以编程方式清除 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 会话的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从另一个 Android 应用程序中清除应用程序数据

如何以编程方式清除缓存?

以编程方式清除 laucher 默认值

有没有办法以编程方式清除所有缓存文件?

Android 以编程方式创建一个简单的菜单

如何使用 js 以编程方式为 android/ios 上的网站创建桌面快捷方式?