6

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

Email Types

从图像中,很明显,一旦在,用户的迹象,他将有关该上电子邮件,以确认他的订阅来暗示。我已经订阅了自己,并验证了用户部分的验证选项卡,我可以看到我的邮件ID和firebase生成的唯一用户ID。这里缺少的是给我的电子邮件ID的确认电子邮件。有人试过这个,还是我尝试了这么早?谢谢你的帮助。

+0

要验证的行为,我甚至尝试过使用其他两个邮件ID,但无法获得任何验证邮件。 – Vijay

+0

你问题的状态已经改变;现在有一个更新的答案。 – Makoto

回答

3

由火力地堡团队提出一个替代

有一两件事你可以做的是一个节点添加到其中包含的所有电子邮件地址为孩子你火力地堡数据库。您应该只允许该节点公开可读(通过Firebase安全规则)。

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

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

1

由于电子邮件验证只与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"); 
      } 
     } 
    }; 
相关问题