2017-02-20 26 views
0

Я регистрирую своих пользователей анонимно, если они не вошли в систему, но обратный вызов onAuthStateChanged не запускается. Кроме того, всякий раз, когда я пытаюсь использовать mAuth.getCurrentUser().getUid(), он дает мне исключение NullPointerException. Вот мой код:Анонимный вход не запускается onAuthStateChanged callback

mAuth = FirebaseAuth.getInstance(); 
mAuthListener = new FirebaseAuth.AuthStateListener() { 

      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 

       FirebaseUser user = firebaseAuth.getCurrentUser(); 

       if (user != null) { 

        // do something 

       } else { 

        mAuth.signInAnonymously().addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() { 
         @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          System.out.println("SIGNED IN ANONYMOUSLY"); 
          System.out.println(mAuth.getCurrentUser().getUid()); // crashes here 
         } 
        }); 

       } 
      } 
     }; 

Застрял на этом в течение нескольких часов, и я понятия не имею, в чем проблема.

Заранее благодарим за любую помощь.

ответ

1

Я в значительной степени уверен, потому что ваш вызов signInAnonymously не возвращается успешно в обратном вызове onComplete. Заменить

System.out.println("SIGNED IN ANONYMOUSLY"); 
System.out.println(mAuth.getCurrentUser().getUid()); 

с

if (task.isSuccessful()) { 
    System.out.println("SIGNED IN ANONYMOUSLY"); 
    System.out.println(mAuth.getCurrentUser().getUid()); 
} 
else{ 
    Log.i(TAG, "signInAnonymously", task.getException()); 
} 

и проверить исключение

+0

Да, спасибо за это, ты прав. Я получаю это исключение: http://pastebin.com/raw/AdyNrzR3, есть ли у вас какие-либо идеи, что может быть причиной этого? – Zuhayr

+0

Понял, что в моих настройках аутентификации не было анонимного входа в систему. Спасибо за помощь. – Zuhayr