【问题标题】:Android Facebook logout is not workingAndroid Facebook 注销不起作用
【发布时间】:2013-02-02 06:52:46
【问题描述】:

现在我正在使用 android Facebook 集成。但是注销无法处理这个问题。如果没有从手机中的浏览器注销,我无法从我的应用程序注销。为什么会发生这种情况?我们如何避免这种情况

【问题讨论】:

    标签: android facebook logout facebook-android-sdk


    【解决方案1】:

    这里有两件独立的事情:
    1) 您的用户是否已向 Facebook 验证您的应用(具有权限)以及
    2) 您的用户是否登录 Facebook。

    您的用户首次使用您的应用时需要进行身份验证,并持续到用户明确取消身份验证(例如,通过 Facebook 网络帐户设置 -> 应用 -> 应用设置)。

    您的用户每次启动您的应用时都可能需要登录。但是,如果您使用默认的 SDK authorize(),它会尝试执行单点登录 (SSO),如果 Facebook 应用已登录,您的应用会自动登录并使用现有的访问令牌。

    如果您使用 SSO,那么当您进行注销时,这没有任何效果,因为真正的注销将不得不注销 Facebook 应用程序 - 用户可能不喜欢!

    您可以通过对表单进行授权来解决此问题

    authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener());
    

    避免 SSO 并强制对话登录。当然,这会强制您的用户在每次启动应用程序时登录 - 除非您将登录详细信息/访问令牌保存在 覆盖(这是 SDK 所做的 - 检查源代码)。

    已编辑:

     m_facebook.authorize(FacebookActivity.this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH,
                new LoginDialogListener());
    
     class LoginDialogListener implements DialogListener
    {
        public void onComplete(Bundle p_values)
        {
            saveCredentials(m_facebook);
            if (m_messageToPost != null)
            {
                postToWall(m_messageToPost);
            }
        }       
        public void onFacebookError(FacebookError p_error)
        {
            finish();
        }       
        public void onError(DialogError p_error)
        {
            finish();
        }       
        public void onCancel()
        {
            finish();
        }
    }
    

    【讨论】:

    • 什么是“FORCE_DIALOG_AUTH”,所有其他参数都被替换了,但不知道 FORCE_DIALOG_AUTH 这对我有帮助。
    • 我的意思是,如果您使用 SSO,isSessionValid 不会告诉您任何有关底层登录状态的信息。为什么不尝试使用 FORCE_DIALOG_AUTH 形式的授权,看看会发生什么?
    • facebook.authorize(this, new String[] { "read_stream,publish_stream,offline_access,friends_about_me,user_birthday" },-1, new DialogListener() { public void onComplete(Bundle values) { Facebook. access_token = facebook.getAccessToken(); getMyInfo(); }
    • 我要更改的地方是 .-1 而不是 FORCE_DIALOG_AUTH 。在上面的代码中需要做哪些更改?
    • 你可以查看我更新的答案。我已经展示了FORCE_DIALOG_AUTH的保存位置
    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2015-11-08
    • 2016-10-28
    • 2016-12-20
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多