Firebase匿名用户身份验证流程

时间:2014-12-08 02:08:52

标签: javascript authentication firebase

我有以下js代码,我尝试登录blog_root对象,然后使用我的user_root通过user_root.on(“child_added”,...)来监听任何更改

var root = new Firebase( /*my firebase url*/);
    var blog_root = root.child("blog");
    var user_root;
    console.log("====");
    blog_root.authAnonymously(function(err, authData) {
        if(err){
            console.log("user not authenticated?"+err);
        }else{
            console.log("user authenticated?"+authData.uid);
            if(authData){
                user_root = blog_root.child(authData.uid);
                user_root.set(authData);
            }
        }
    },{
      remember: "sessionOnly"
    });
user_root.on(
    "child_added", //event_name
    function(snapshot) {
        //called for each existing element and each new element 
    }       

特别是使用此代码,我的user_root对象显示为未定义。我检查了我的数据,并且匿名用户已成功添加到blog_root,但我似乎无法收听user_root上的更改。

我收集的是user_root.on(“child_added”)事件在我的身份验证语句中被触发,但这对我没有意义,因为user_root在身份验证语句中被初始化。

任何线索?

1 个答案:

答案 0 :(得分:3)

authAnonymously方法是异步的,并且在首次到达user_root.on('child_added', ...)后调用回调。尝试将此侦听器移动到authAnonymously的回调中。

另请注意,每次拨打authAnonymously()时,您都会创建新会话。默认情况下,会话会自动保留。要检查用户是否已经过身份验证,请尝试ref.getAuth(),如果用户未经身份验证(authAnonymously()),则仅调用ref.getAuth() === null