Facebook Android SDK 注销监听器

Posted

技术标签:

【中文标题】Facebook Android SDK 注销监听器【英文标题】:Facebook Android SDK logout listener 【发布时间】:2013-05-22 05:33:27 【问题描述】:

我在我的应用程序中使用 facbook sdk。当我通过 facebook sdk 登录我的应用程序时,一切正常,但是当我打开 Facebook 应用程序并从 Facebook 应用程序注销时,我的应用程序仍然登录。那么如何添加一个监听器来监听 Facebook SDK 的注销事件呢?

【问题讨论】:

你不能。不支持。 【参考方案1】:

这是一个老问题,但我想更新一个答案。

在 Facebook API 4.0 中(在撰写本文时为最新版本)您可以使用 AccessTokenTracker。

    AccessTokenTracker accessTokenTracker = new AccessTokenTracker() 
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken accessToken, AccessToken accessToken2) 
            Log.d(TAG, "onCurrentAccessTokenChanged()");
            if (accessToken == null) 
                // Log in Logic
             else if (accessToken2 == null) 
                // Log out logic
            
        
    ;

【讨论】:

赞成,但“登录逻辑”不起作用 - 注销很好。另请注意,文档说,如果您要使用跟踪器,则需要确保它使用“startTracking”和“stopTracking”,因为它们在内部使用接收器:developers.facebook.com/docs/facebook-login/android/v2.4【参考方案2】:

我在Listen for Facebook logout with the LoginButton. (4.1)找到的最佳答案

private AccessTokenTracker fbTracker;
...
fbTracker = new AccessTokenTracker() 
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken accessToken, AccessToken accessToken2) 
                if (accessToken2 == null) 
                    Log.d("FB", "User Logged Out.");
                
            
        ;

【讨论】:

【参考方案3】:

您也可以尝试使用:

LoginManager.getInstance().logOut();

所以你可以打开你的应用,然后关闭它,然后再次打开它,看看它是否已注销:

@Override
public void onDestroy() 
    super.onDestroy();
    LoginManager.getInstance().logOut();

【讨论】:

以上是关于Facebook Android SDK 注销监听器的主要内容,如果未能解决你的问题,请参考以下文章

从我的应用程序中注销(使用 facebook android sdk 4.0 开发)并安装 facebook 原生应用程序

facebook android sdk 4.0,从 LoginManager 注销回调的方法

Android Facebook sdk 覆盖登录按钮

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

Android - Facebook SDK 登录

Facebook android SDK重新打开会话