我正在创建一个可以发送通知的Android应用程序。 用户可以选择使用电话号码或电子邮件帐户。
我只需要验证用户输入的电子邮件,我不想创建 Firebase帐户
Firebase有一个FirebaseUser#sendEmailVerification()
,但需要创建一个帐户。
换句话说,我只是希望电子邮件验证与电话验证相同,Firebase会向您发送代码或验证链接。
有没有办法在不创建帐户的情况下利用Firebase电子邮件验证?
答案 0 :(得分:2)
对于任何想要完成同样目标的人来说,我的表现如何。
转到Fibrebase控制台并在身份验证屏幕上启用Email/Password
和Anonymous
登录方法
Firebird Authentication screen
然后在您的代码中,创建一个匿名用户(这就是诀窍,因为现在您有一个有效的用户进行验证),更改电子邮件,然后发送验证。之后,重新加载Firebird用户并检查isEmailVerified()
mAuth = FirebaseAuth.getInstance();
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "signInAnonymously:success");
if (mAuth.getCurrentUser().isEmailVerified() == false) {
mAuth.getCurrentUser().updateEmail("<MAIL YOU WANTO TO VERIFY HERE>");
mAuth.getCurrentUser().sendEmailVerification();
Log.e(TAG, "mail sent.....................................");
}
//updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInAnonymously:failure", task.getException());
Toast.makeText(getApplicationContext(), "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
这是重装部分:
mAuth.getCurrentUser().reload()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.e(TAG,( mAuth.getCurrentUser().isEmailVerified() ? "VERIFIED" : "Not verified"));
}
});
答案 1 :(得分:0)
电话号码验证和电子邮件验证都与Firebase身份验证帐户绑定。由于验证结果是用户帐户中的相关属性(email_verified
或phone_number
)得到更新,因此无法将其与此类帐户一起使用。
答案 2 :(得分:0)
@NickPR: 我还没有找到解决方案。 uper提供的代码无法正常工作。我没有给我发送电子邮件,但是日志包含电子邮件已发送的消息。...... 该代码的含义是:
mAuth.getCurrentUser().reload()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.e(TAG,( mAuth.getCurrentUser().isEmailVerified() ? "VERIFIED" : "Not verified"));
}
});