使用firebase facebook身份验证,auth.logout无法在我的应用中运行

时间:2013-09-28 13:25:10

标签: facebook authentication firebase

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

我使用了注销按钮并在其上绑定了click事件,如下所示:

$(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之外使用,那么它工作正常。

请帮我弄清楚这个问题。

1 个答案:

答案 0 :(得分:1)

auth.logout()相关的问题不同,您不应该在此回调中调用auth.login('facebook');。相反,它应该在用户点击事件后调用,因为您的浏览器将阻止Facebook弹出窗口启动。

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

  

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

     

出于这个原因,我们建议您只调用“login()”   用户点击后第三方认证方法的方法。