Firebaseのメール/パスワード認証を正常に設定しましたが、セキュリティ上の理由から、ユーザーにメールを確認してもらいたいです。 Firebases Webサイトで次のように書かれています。
ユーザーがメールアドレスとパスワードを使用してサインアップすると、確認メールが送信され、メールアドレスが確認されます。
しかし、サインアップしても、確認メールが届きません。
私は見て、パスワードリセットメールを送信するためのコードのみを見つけましたが、確認メールを送信するためのコードは見つけられませんでした。
私はここを見ました:
https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email
誰も私がそれを行う方法についての手がかりを手に入れましたか?
新しいFirebaseメール認証ドキュメントが適切に文書化されていないことに気付きました。
firebase.auth().onAuthStateChanged(function(user) {
user.sendEmailVerification();
});
次のことに注意してください。
メールが検証されているかどうかを確認するには:
firebase.auth().onAuthStateChanged(function(user) {
if (user.emailVerified) {
console.log('Email is verified');
}
else {
console.log('Email is not verified');
}
});
ユーザーを作成すると、Userオブジェクトが返されます。ユーザーオブジェクトでは、ユーザーのメールが検証済みかどうかを確認できます。
ユーザーが検証されていない場合、ユーザーオブジェクト自体でsendEmailVerificationメソッドをトリガーできます。
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);
});
AuthStateをリッスンして確認することもできます。次のメソッドの問題は、新しいセッションごとに(ページを更新することで)新しいメールが送信されることです。
firebase.auth().onAuthStateChanged(function(user) {
user.sendEmailVerification();
});
確認メールを送信し、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]
}
};
コンパイル "com.google.firebase:firebase-auth:9.2.0"を使用し、 'com.google.firebase:firebase-core:9.2.0'をコンパイルしている場合、メソッドsendEmailVerification()は更新するまで解決されません。 9.8.0以降に。私はそれを理解する前にほとんどの時間を無駄にしました。