programing

Firebase에서 확인 이메일을 보내는 방법은 무엇입니까?

magicmemo 2023. 7. 20. 21:52
반응형

Firebase에서 확인 이메일을 보내는 방법은 무엇입니까?

파이어베이스의 이메일과 비밀번호를 사용하여 사용자를 등록합니다.다음과 같이:

mAuth.createUserWithEmailAndPassword(email, password)

.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {

    if (task.isSuccessful()) {

        FirebaseUser signed = task.getResult().getUser();

        writeNewUser(signed.getUid());

        new android.os.Handler().postDelayed(

                new Runnable() {
                    public void run() {

                        updateUser(b);

                    }
                }, 3000);

    } else {

        new android.os.Handler().postDelayed(

                new Runnable() {
                    public void run() {

                        onSignupFailed();

                    }
                }, 3000);

    }

    }
});

사용자의 이메일이 성공적으로 등록된 후에 파이어베이스에서 확인 이메일을 보내주길 원합니다.파이어베이스를 사용하면 가능하다는 것을 알고 있습니다.sendEmailVerification이 이메일을 보내는 것 외에도, 나는 그들이 이메일을 확인할 때까지 사용자의 계정을 비활성화하기를 원합니다.이를 위해서는 Firebase의isEmailVerified특징.그러나 Firebase에서 확인 이메일을 보내도록 하는 데 실패하여 확인 이메일을 보내는 계정을 비활성화 및 활성화하는 방법을 찾을 수 없었습니다.

이 질문은 Firebase를 사용하여 확인 이메일을 보내는 방법에 대한 것입니다.OP는 확인 이메일을 보내는 계정을 비활성화하고 활성화하는 방법과 확인 후에 활성화하는 방법을 파악할 수 없습니다.

또한 이는 소방 기반 설명서에 제대로 기록되어 있지 않습니다.그래서 저는 누군가가 문제에 직면했을 때 따를 수 있는 절차를 차근차근 작성하고 있습니다.

사용자는 createUserWithEmailAndPassword 메서드를 사용할 수 있습니다.

예:

mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        Log.d("TAG", "createUserWithEmail:onComplete:" + task.isSuccessful());

                        // If sign in fails, display a message to the user. If sign in succeeds
                        // the auth state listener will be notified and logic to handle the
                        // signed in user can be handled in the listener.
                        if (!task.isSuccessful()) {
                            // Show the message task.getException()
                        }
                        else
                        {
                            // successfully account created
                            // now the AuthStateListener runs the onAuthStateChanged callback
                        }

                        // ...
                    }
                });

새 계정이 생성된 경우 사용자도 로그인하고 AuthStateListener가 onAuthStateChanged 콜백을 실행합니다.콜백에서 사용자에게 확인 전자 메일을 보내는 작업을 관리할 수 있습니다.

예:

onCreate(...//
mAuthListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user != null) {
            // User is signed in
            // NOTE: this Activity should get onpen only when the user is not signed in, otherwise
            // the user will receive another verification email.
            sendVerificationEmail();
        } else {
            // User is signed out

        }
        // ...
    }
};

이제 확인 이메일 보내기를 다음과 같이 쓸 수 있습니다.

private void sendVerificationEmail()
    {
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

        user.sendEmailVerification()
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            // email sent


                                    // after email is sent just logout the user and finish this activity
                                    FirebaseAuth.getInstance().signOut();
                                    startActivity(new Intent(SignupActivity.this, LoginActivity.class));
                                    finish();
                        }
                        else
                        {
                            // email not sent, so display message and restart the activity or do whatever you wish to do

                                    //restart this activity
                                    overridePendingTransition(0, 0);
                                    finish();
                                    overridePendingTransition(0, 0);
                                    startActivity(getIntent());

                        }
                    }
                });
    }

로그인 활동으로 이동 중:

여기서 사용자가 성공적으로 로그인한 경우 이메일의 확인 여부를 확인하기 위해 로직을 작성하는 메소드를 호출할 수 있습니다.

예:

mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        //Log.d("TAG", "signInWithEmail:onComplete:" + task.isSuccessful());

                        // If sign in fails, display a message to the user. If sign in succeeds
                        // the auth state listener will be notified and logic to handle the
                        // signed in user can be handled in the listener.
                        if (!task.isSuccessful()) {
                            //Log.w("TAG", "signInWithEmail:failed", task.getException());

                        } else {
                            checkIfEmailVerified();
                        }
                        // ...
                    }
                });

이제 CheckIfEmailVerified 메서드에 대해 살펴보겠습니다.

private void checkIfEmailVerified()
{
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    if (user.isEmailVerified())
    {
        // user is verified, so you can finish this activity or send user to activity which you want.
        finish();
        Toast.makeText(LoginActivity.this, "Successfully logged in", Toast.LENGTH_SHORT).show();
    }
    else
    {
        // email is not verified, so just prompt the message to the user and restart this activity.
        // NOTE: don't forget to log out the user.
        FirebaseAuth.getInstance().signOut();

        //restart this activity

    }
}

그래서 저는 이메일이 확인되었는지 확인하고 있습니다.그렇지 않은 경우 사용자를 로그아웃합니다.

그래서 이것이 제가 제대로 추적하는 방법이었습니다.

사용자의 전자 메일로 확인 보내기

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.sendEmailVerification();

사용자 확인 여부 확인

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
boolean emailVerified = user.isEmailVerified();

사용하다FirebaseAuth.getInstance().getCurrentUser().sendEmailVerification()그리고.FirebaseAuth.getInstance().getCurrentUser().isEmailVerified()

Firebase SDK를 통해 계정을 비활성화할 수 없습니다.당신이 할 수 있는 것은 사용하는 것입니다.GetTokenResultFirebase Auth ID 토큰을 포함하고 사용자 지정 백엔드에 대해 이 토큰을 검증하거나 해당 사용자에 해당하는 Firebase 데이터베이스에 플래그를 설정합니다.개인적으로 저는 파이어베이스 데이터베이스에 있는 깃발과 함께 갈 것입니다.

Firebase와 이메일 링크를 보내려면 먼저 Firebase를 잡아야 합니다.다음을 통해 Firebase에서 사용자를 생성하는 인스턴스를 사용하는 Auth 인스턴스:

firebaseauth.createUserWithEmailAndPassword(email,pass);

메서드가 성공을 반환하면 Firebase 사용자 인스턴스를 사용하는 사용자에게 다음과 같이 확인 링크를 보냅니다.

 final FirebaseUser user = mAuth.getCurrentUser();
                      user.sendEmailVerification()

다음 링크를 참조하십시오. https://technicalguidee.000webhostapp.com/2018/10/email-verification-through-link-using-firebase-authentication-product-android .

   mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if(task.isSuccessful()){

                    mAuth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {

                            if (task.isSuccessful()) {



                                Toast.makeText(this, "please check email for verification.", Toast.LENGTH_SHORT).show();
                                loadingBar.dismiss();
                            }else{
                                Toast.makeText(this, task.getException().getMessage() , Toast.LENGTH_SHORT).show();
                            }
                        }
                    });

코틀린을 위하여

val user: FirebaseUser? = firebaseAuth.currentUser
user?.sendEmailVerification()

언급URL : https://stackoverflow.com/questions/40404567/how-to-send-verification-email-with-firebase

반응형