簡體   English   中英

Firebase電子郵件驗證android

[英]Firebase email verification android

我是Firebase開發的新手。 我正在使用Firebase創建用戶登錄系統。 我正在努力驗證注冊用戶的電子郵件。 這是我寫的代碼。

auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
                    progressBar.setVisibility(View.GONE);
                    FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
                    user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if(task.isSuccessful()){
                                Log.i("Success", "Yes");
                            }
                            else{
                                Log.i("Success", "No");}
                        }
                    });

                    if (!task.isSuccessful()) {
                        Toast.makeText(MainActivity.this, "Authentication failed." + task.getException(),
                                Toast.LENGTH_SHORT).show();
                    } else {

                        startActivity(new Intent(MainActivity.this, Activity2.class));
                        finish();
                    }

                }
            });
        }
    });

編輯:注冊成功后不會觸發驗證電子郵件。 我得到的錯誤是

10-12 10:41:47.579 10529-10529 / com.firebase I /成功:
Nocom.google.firebase.FirebaseException:發生內部錯誤。 [USER_NOT_FOUND]

  1. 您需要啟用電子郵件和密碼驗證,配置電子郵件和密碼

  2. 在此頁面中,您可以在頁面上找到許多教程。

如果您使用的是新版本的firebase,您可以嘗試檢查您的連接...信息在這里

您需要檢查createUserWithEmailAndPassword()的狀態,以確保在獲取當前用戶並調用sendEmailVerification()之前它已成功。 createUserWithEmailAndPassword()可能失敗(帳戶已存在,弱密碼,格式錯誤的電子郵件地址等)有很多原因。 如果失敗,則當前用戶為先前登錄的用戶,如果之前沒有登錄,則為null。

像這樣重構你的代碼:

    auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            Toast.makeText(MainActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
            progressBar.setVisibility(View.GONE);

            if (!task.isSuccessful()) {
                Toast.makeText(MainActivity.this, "Authentication failed." + task.getException(),
                        Toast.LENGTH_SHORT).show();
            } else {
                FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
                user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            Log.i("Success", "Yes");
                        }
                        else{
                            Log.i("Success", "No");}
                    }
                });

                startActivity(new Intent(MainActivity.this, Activity2.class));
                finish();
            }
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM