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"); 
      } 
     } 
    }; 
相關問題