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를 통해 계정을 비활성화할 수 없습니다.당신이 할 수 있는 것은 사용하는 것입니다.GetTokenResult
Firebase 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
'programing' 카테고리의 다른 글
이벤트 루프 이해 (0) | 2023.07.25 |
---|---|
C에서 가장 높은 순서 비트 찾기 (0) | 2023.07.20 |
데이터베이스에 암호를 저장하는 기본 방법 (0) | 2023.07.20 |
다른 스키마에 있는 DBLINK를 사용하여 Oracle에서 선택하는 방법은 무엇입니까? (0) | 2023.07.20 |
임시 테이블이 있는 경우 해당 테이블 삭제 (0) | 2023.07.20 |