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

Programmatically clear Facebook SDK 4.0 session on Android

我将 Facebook 登录集成到我的应用程序中,并且运行良好。问题出在注销上。

当我在我的设备上打开 Facebook 应用程序时,我可以执行注销,以便下次打开它时,它会询问我是否要使用我常用的帐户登录、使用其他帐户登录甚至创建一个新账户。很好,符合预期。

但我的应用程序不会发生这种情况。我的意思是,如果用户打开我的应用程序,点击 "logout",下面的代码是 运行

// Initialize Facebook SDK on the beginning.
FacebookSdk.sdkInitialize(this.getApplicationContext());
...
// Logout on user choice.
LoginManager.getInstance().logOut();

下次他回到应用程序并点击登录时,他将直接使用他的帐户登录,不会询问他要登录的每个帐户。

我想我需要清除所有保存的信息(令牌?),这些信息将用于直接登录。这个对吗?如果可以,我该怎么做?

谢谢,

我正在使用这个方法。它是针对 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 sdk 在您的情况下使用您的网络浏览器(chrome,等等)。当你调用 LoginManager.getInstance().logOut(); 时,你只是从 facebook sdk 注销,但你仍然在你的网络浏览器中保持登录状态。 The Android and iOS SDKs don't currently support re-authentication. 希望他们将来会是 ;)