auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证

Posted

技术标签:

【中文标题】auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证【英文标题】:auth.logout is not working in my app using firebase facebook authentication 【发布时间】:2013-09-28 13:25:10 【问题描述】:

我已经尝试了 Firebase Facebook 身份验证的基本步骤。因此,在我的应用中,用户可以使用 Firebase Facebook 身份验证成功登录。但是我在注销时遇到了问题。

我使用了注销按钮并在其上绑定点击事件,如下图:

$(function()
    $('#lgout').click(function()   
       auth.logout();
    );
);

我使用以下代码登录:

var chatRef = new Firebase('https://my-firebase-url');
    var auth = new FirebaseSimpleLogin(chatRef, function(error, user) 
          if (error) 
            // an error occurred while attempting login
            alert("please login first");
           else if (user) 
            // user authenticated with Firebase
            //alert('User ID: ' + user.id + ', Provider: ' + user.provider);
            $.ajax(
                type: "GET",
                url: "https://graph.facebook.com/"+user.id,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data) 
                $('#user').text("Welcome  "+data.name);
                
            );
           else 
            // user is logged out
            //auth.login('facebook');
          
        );
        auth.login('facebook');

在登录时,我也遇到了一个问题,正如您在else 部分中看到的那样,我使用了auth.login('facebook');,它无法正常工作并显示错误 auth is not defined。但如果我在else 之外使用它,那么它工作正常。

请帮我解决这个问题。

【问题讨论】:

您能澄清一下您在使用 logout() 时遇到的问题吗?你的问题不清楚。哪些行为与您的预期不同?您是否在控制台中看到错误? 不,它在控制台没有给出任何错误。我的问题是当我点击注销按钮时,我的 fb 会话应该过期吗?所以这里不会发生这种情况 当您调用 logout() 时,您的 Firebase 简单登录会话已过期,但您仍登录 Facebook,并且该应用程序仍在您的 Facebook 帐户中进行身份验证。再次调用 login() 可能会立即出现,并且不会要求用户再次批准应用程序,这是 Facebook Connect 的预期行为。 @RobDiMarco 哦,是这样的,嗯.. 明白了。谢谢 【参考方案1】:

与关于auth.logout() 的问题分开,你不应该在这个回调中调用auth.login('facebook');。相反,它应该在用户点击事件之后调用,因为您的浏览器会阻止 Facebook 弹出窗口启动。

来自https://www.firebase.com/docs/security/simple-login-overview.html

第三方身份验证方法使用浏览器弹出窗口 提示用户登录、批准申请并返回 用户的数据到请求的应用程序。大多数现代浏览器都会 阻止打开此弹出窗口,除非它被 直接用户操作。

因此,我们建议您只调用“login()” 用户点击时的第三方认证方式方法。

【讨论】:

好的,谢谢,知道了。但是 auth.logout() 呢?为什么它在我的情况下不起作用?任何想法

以上是关于auth.logout 在我的应用程序中无法使用 firebase facebook 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2:Auth::logout() 不起作用

laravel5.2之logout注销账号无效

Tank Auth 的 Codeigniter 路由设置

使用“服务器端工作流程”(OAuth 2.0)登录后,正在引发 FB auth.logout

用户从Laravel 5.2中的帐户删除后没有注销的原因

JS SDK auth.logout 事件行为最近似乎发生了变化——这是怎么回事?