[英]Email verification using Firebase 3.0 on Android
Firebase现在提供适用于Android的电子邮件验证。 请参阅此发行说明: https : //firebase.google.com/support/release-notes/android#9.6
Firebase团队建议的替代方法
您可以做的一件事是将一个节点添加到Firebase数据库中,该节点包含所有作为子级的电子邮件地址。 您应该使该节点仅公开可读(通过Firebase安全规则)。
然后,从您的应用程序内部,一旦用户注册/登录,您便会检查该用户的电子邮件是否在列表中,如果没有,则将其注销并踢出您的应用程序(作为奖励,您可以甚至可以将入侵者的电子邮件地址记录在您的数据库中,以便以后可以检查谁在尝试访问您的应用程序。
如果您知道在电子邮件验证进入Android之前将要测试您的应用程序的人员的电子邮件ID,则此方法将适用于初始测试。
由于电子邮件验证仅适用于Email/Password authentication
,因此,成功注册后,发送Email/Password authentication
的最佳位置是createUserWithEmailAndPassword(...)
方法的onComplete
方法。
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
sendVerificationEmail();
....
定制的sendVerification
方法是:
public void sendVerificationEmail() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(SignUpActivity.this, "Signup successful.
Verification email sent", Toast.LENGTH_SHORT).show();
}
}
});
}
}
然后,您可以通过以下方式检查用户是否已在应用程序中的任何位置验证了他们的电子邮件:
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null ) {
Log.e(TAG, firebaseUser.isEmailVerified() ? "User is signed in and email is verified" : "Email is not verified");
} else {
Log.e(TAG, "onAuthStateChanged:signed_out");
}
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.