【问题标题】:Programmatically clear Facebook SDK 4.0 session on Android以编程方式清除 Android 上的 Facebook SDK 4.0 会话
【发布时间】: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();

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

我认为我需要清除所有保存的信息(令牌?),这些信息正在用于此直接登录。它是否正确?如果是,我该怎么做?

谢谢,

【问题讨论】:

    标签: android facebook 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 > 清除历史记录和网站数据。这使我可以使用其他用户登录。感谢您提供此信息!
    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 2015-06-17
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多