2016-05-25 8 views
34

Skonfigurowałem uwierzytelnianie poczty e-mail/hasła pomyślnie, ale ze względów bezpieczeństwa chcę, aby użytkownik potwierdził swój adres e-mail. Na stronie Firebases znajduje się:Wiadomość e-mail z potwierdzeniem Firebase nie jest wysyłana

Gdy użytkownik zarejestruje się za pomocą adresu e-mail i hasła, e-mail z potwierdzeniem zostanie wysłany w celu zweryfikowania adresu e-mail.

Ale po rejestracji nie otrzymuję wiadomości z potwierdzeniem.

Sprawdziłem i mogę znaleźć tylko kod do wysłania e-maila z resetem hasła, ale nie kod do wysłania potwierdzenia e-mailem.

szukałem tutaj:

https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email

ktoś ma pojęcia o tym, w jaki sposób mogę to zrobić?

+2

Połączyłeś się z dokumentacją na iOS, ale zaakceptowana odpowiedź używa JavaScript.Którego używasz (aby móc powtórzyć pytanie pasujące do używanej platformy)? –

+0

Podaj odpowiedni tag dla tego pytania. –

+0

Nie mogę zlokalizować .sendEmailVerification() w wersji Android. Czy ktoś mógł skorzystać z weryfikacji poczty e-mail w Firebase na Androida? – Buli1212

Odpowiedz

74

Zauważyłem, że nowe dokumenty uwierzytelniania poczty e-mail Firebase nie są odpowiednio udokumentowane.

firebase.auth().onAuthStateChanged(function(user) { 
    user.sendEmailVerification(); 
}); 

Należy pamiętać, że:

  1. Można wysłać tylko weryfikację e-mail do użytkowników obiektu, którego został utworzony za pomocą poczty elektronicznej metody & Hasło createUserWithEmailAndPassword
  2. Dopiero po podpisał użytkowników do uwierzytelnionego stanu, Firebase zwróci obietnicę obiektu auth.
  3. Stara metoda onAuth została zmieniona na onAuthStateChanged.

Aby sprawdzić, czy e-mail jest weryfikowana:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user.emailVerified) { 
    console.log('Email is verified'); 
    } 
    else { 
    console.log('Email is not verified'); 
    } 
}); 
+0

Dziękuję, szukałem ta odpowiedź, czy wiesz, jak sprawdzić, czy wiadomość e-mail została potwierdzona? – Benja0906

+2

firebase.auth(). OnAuthStateChanged (funkcja (użytkownik) {(user.emailVerified)? Console.log ("Email jest zweryfikowany"): console.log ("Email is not verified")}); –

+0

Dziękuję, to było bardzo pomocne :) – Benja0906

4

można wysłać e-mail weryfikacyjny i sprawdzić, czy została zweryfikowana jak postępować w AuthListener:

mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 

      if (user != null) { 

//---- HERE YOU CHECK IF EMAIL IS VERIFIED 

       if (user.isEmailVerified()) { 
        Toast.makeText(LoginActivity.this,"You are in =)",Toast.LENGTH_LONG).show(); 
       } 

       else { 

//---- HERE YOU SEND THE EMAIL 

        user.sendEmailVerification(); 
        Toast.makeText(LoginActivity.this,"Check your email first...",Toast.LENGTH_LONG).show(); 
       } 

      } else { 
       // User is signed out 
       Log.d(TAG, "onAuthStateChanged:signed_out"); 
      } 
      // [START_EXCLUDE] 
      updateUI(user); 
      // [END_EXCLUDE] 
     } 
    }; 
2

jeśli używasz kompilacji " com.google.firebase: firebase-auth: 9.2.0 "i skompiluj" com.google.firebase: firebase-core: 9.2.0 "metoda sendEmailVerification() nie zostanie rozwiązana, dopóki nie zaktualizujesz do wersji 9.8.0 lub nowszej . Zmarnował większość czasu, zanim się zorientowałem.

+0

Dziękuję. Zmarnowałem dużo czasu, zanim to przeczytam. – dacscan3669

0

Po utworzeniu użytkownika zwracany jest obiekt Użytkownik, w którym można sprawdzić, czy wiadomość e-mail użytkownika została zweryfikowana, czy nie.

Gdy użytkownik nie został zweryfikowany, można uruchomić metodę sendEmailVerification na obiekcie użytkownika.

firebase.auth() 
    .createUserWithEmailAndPassword(email, password) 
    .then(function(user){ 
     if(user && user.emailVerified === false){ 
     user.sendEmailVerification().then(function(){ 
      console.log("email verification sent to user"); 
     }); 
     } 
    }).catch(function(error) { 
     // Handle Errors here. 
     var errorCode = error.code; 
     var errorMessage = error.message; 

     console.log(errorCode, errorMessage); 
    }); 

Można również sprawdzić słuchając AuthState, problem z następującą metodą jest, że z każdej nowej sesji (odświeżenie strony), nowy e-mail zostanie wysłana.

firebase.auth().onAuthStateChanged(function(user) { 
    user.sendEmailVerification(); 
});