在Android上使用Firebase 3.0进行电子邮件验证

在Android上使用Firebase 3.0进行电子邮件验证,android,firebase,firebase-authentication,email-verification,Android,Firebase,Firebase Authentication,Email Verification,我知道我们可以用Firebase Auth 3.0验证用户的电子邮件。我找不到任何关于Android上电子邮件验证的文档。我可以在iOS和web上找到相同的功能,但在Android上没有。任何指向文档的链接都会有所帮助 从图中可以清楚地看出,一旦用户登录,他将在电子邮件中得到关于这一点的提示,以确认其订阅。我已经订阅了我自己,并且在Auth选项卡的users部分进行了验证,我能够看到我的邮件id和firebase生成的唯一用户id。这里缺少的是我的电子邮件id的确认电子邮件。是否有人尝试过这一

我知道我们可以用Firebase Auth 3.0验证用户的电子邮件。我找不到任何关于Android上电子邮件验证的文档。我可以在iOS和web上找到相同的功能,但在Android上没有。任何指向文档的链接都会有所帮助

从图中可以清楚地看出,一旦用户登录,他将在电子邮件中得到关于这一点的提示,以确认其订阅。我已经订阅了我自己,并且在Auth选项卡的users部分进行了验证,我能够看到我的邮件id和firebase生成的唯一用户id。这里缺少的是我的电子邮件id的确认电子邮件。是否有人尝试过这一点,或者我尝试得太早了?感谢您的帮助。

更新 电子邮件验证在中提供

原始答案
电子邮件验证还不适用于Android。还提供了更多的背景信息。

Firebase团队建议的替代方案

您可以做的一件事是向Firebase数据库中添加一个节点,该节点包含作为子节点的所有电子邮件地址。您应该使此节点仅公开可读(通过Firebase安全规则)

然后,在你的应用程序中,一旦用户注册/登录,你就可以检查该用户的电子邮件是否在列表中,如果不在列表中,你就可以将其注销并将其从你的应用程序中踢出(作为奖励,你甚至可以将入侵者的电子邮件地址登录到你的数据库中,以便以后可以检查谁试图访问你的应用程序)


如果您知道将要测试您的应用程序的人员的电子邮件ID,那么这将适用于初始测试,直到电子邮件验证进入Android。

Android电子邮件验证现在在Firebase中可用。 请参阅本发行说明:

由于电子邮件验证只适用于
电子邮件/密码验证
,因此在注册成功后,发送电子邮件的最佳位置是
onComplete
方法
createUserWithEmailAndPassword(…)
方法

firebaseAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            sendVerificationEmail();
                         ....
然后,您可以通过拨打以下电话检查用户是否已在应用程序中的任何位置验证其电子邮件:

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");
            }
        }
    };

为了验证这种行为,我甚至尝试使用另外两个邮件id,但无法获得任何验证电子邮件;现在有一个更新的答案。@FrankvanPuffelen:这个答案。
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");
            }
        }
    };