2014-12-08 2 views
0

У меня есть следующий код JS, где я пытаюсь войти на объект blog_root, а затем использовать мой user_root для прослушивания любых изменений с user_root.on («child_added», ...)Firebase Anonymous поток аутентификации пользователя

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 инициализируется внутри оператора аутентификации.

Любые подсказки?

ответ

3

Метод authAnonymously является асинхронным, и обратным вызовом после вы первым получите user_root.on('child_added', ...). Попробуйте перевести этого слушателя в обратный вызов с authAnonymously.

Также обратите внимание, что каждый раз, когда вы вызываете authAnonymously(), вы создаете новый сеанс. По умолчанию сеансы автоматически сохраняются. Чтобы проверить, не аутентифицирован ли пользователь, попробуйте ref.getAuth() и только вызывать authAnonymously(), если пользователь не прошел проверку (ref.getAuth() === null).

+0

Woot! Хорошо, теперь все имеет смысл. Спасибо, Роб! – ebichuhamster

Смежные вопросы