반응형
Android용 Firebase에서 암호를 잊어버림
Firebase에서 비밀번호를 변경하는 방법이 있다고 생각합니다만, 사용자가 비밀번호를 잊어버리고 새로운 비밀번호를 할당받거나 이메일이나 SMS OTP를 사용하여 재인증할 수 있는 방법이 있습니까?인터넷으로 확인해 봤는데, 찾을 수가 없었어요.
어떻게 구현할 수 있는지, 모든 기능 호출이 필요한 방법이 있습니다.예를 들어 설명해 주시겠습니까?
암호 재설정 전자 메일을 보내는 것처럼 들립니다.Firebase 설명서의 다음 예를 참조하십시오.
FirebaseAuth.getInstance().sendPasswordResetEmail("user@example.com")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
}
});
Android FireBase 암호 재설정
Java 파일
public class ResetPasswordActivity extends AppCompatActivity {
private EditText inputEmail;
private Button btnReset, btnBack;
private FirebaseAuth auth;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reset_password);
inputEmail = (EditText) findViewById(R.id.email);
btnReset = (Button) findViewById(R.id.btn_reset_password);
btnBack = (Button) findViewById(R.id.btn_back);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
auth = FirebaseAuth.getInstance();
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = inputEmail.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplication(), "Enter your registered email id", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
auth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(ResetPasswordActivity.this, "We have sent you instructions to reset your password!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ResetPasswordActivity.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
}
});
}
});
}
}
XML 파일
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:fitsSystemWindows="true"
tools:context=".LoginActivity">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="10dp"
android:text="@string/lbl_forgot_password"
android:textColor="@android:color/white"
android:textSize="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:padding="@dimen/activity_horizontal_margin"
android:text="@string/forgot_password_msg"
android:textColor="@android:color/white"
android:textSize="14dp" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="20dp"
android:hint="@string/hint_email"
android:inputType="textEmailAddress"
android:textColor="@android:color/white"
android:textColorHint="@android:color/white" />
</android.support.design.widget.TextInputLayout>
<!-- Login Button -->
<Button
android:id="@+id/btn_reset_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:background="@color/colorAccent"
android:text="@string/btn_reset_password"
android:textColor="@android:color/black" />
<Button
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@null"
android:text="@string/btn_back"
android:textColor="@color/colorAccent" />
</LinearLayout>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center|bottom"
android:layout_marginBottom="20dp"
android:visibility="gone" />
</android.support.design.widget.CoordinatorLayout>
문서 복사 및 붙여넣기:
FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = "user@example.com";
auth.sendPasswordResetEmail(emailAddress)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
}
});
문서에 대한 이 링크를 통해 도움이 될 것입니다.
간단히 말해서, Firebase에는 changePassword라는 방법이 있습니다. 링크를 따라 구현 방법을 알아보십시오.
이 방법을 사용해 보십시오.
private void resetpasswoord() {
FirebaseAuth auth = FirebaseAuth.getInstance();
String emailaddress = resest_email.getText().toString();
auth.sendPasswordResetEmail(emailaddress)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
Toast.makeText(getApplicationContext(), "Check Your Email", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ForgotPasswordActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
유니티가 이것을 시도한다면 다음과 같습니다.
string emailaddress = resest_email.text;
FirebaseAuth.DefaultInstance.SendPasswordResetEmailAsync(emailaddress).ContinueWith((task =>
{
if (task.IsCompleted)
{
Debug.Log("Email sent.");
}
if (task.IsFaulted)
{
Firebase.FirebaseException e =
task.Exception.Flatten().InnerExceptions[0] as Firebase.FirebaseException;
GetErrorMessage((AuthError)e.ErrorCode);
return;
}
}));
}
void GetErrorMessage(AuthError errorcode)
{
string msg = "";
msg = errorcode.ToString();
print(msg);
}
아래는 진행률 대화상자가 있는 사용자 이메일 주소에서 비밀번호 재설정 링크를 보내는 간단한 방법입니다. (일부 파이어베이스는 클라이언트 측의 인터넷 연결 속도가 느리기 때문에 비밀번호 재설정 요청을 완료하는 데 시간이 걸렸으므로 진행률 대화상자가 도움이 될 것입니다.
public void resetUserPassword(String email){
FirebaseAuth mAuth = FirebaseAuth.getInstance();
final ProgressDialog progressDialog = new ProgressDialog(ForgotPasswordActivity.this);
progressDialog.setMessage("verifying..");
progressDialog.show();
mAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Reset password instructions has sent to your email",
Toast.LENGTH_SHORT).show();
}else{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),
"Email don't exist", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
});
}
Kotlin 언어를 선택한 경우 다음을 사용할 수 있습니다.
val fAuth = FirebaseAuth.getInstance()
fAuth.sendPasswordResetEmail(email).addOnCompleteListener({ listener ->
if (listener.isSuccessful) {
// Do something when successful
} else {
// Do something when not successful
}
})
Flooth에서 작업하는 경우 다음을 사용합니다.
@override
Future<void> resetPassword(String email) async {
await _firebaseAuth.sendPasswordResetEmail(email: email);
}
언급URL : https://stackoverflow.com/questions/42800349/forgot-password-in-firebase-for-android
반응형
'programing' 카테고리의 다른 글
동일한 그래프에 두 그래프 표시 (0) | 2023.06.05 |
---|---|
Android:이전 활동으로 돌아가기 (0) | 2023.06.05 |
테스트 사용자에 대한 iOS 앱 내 구매 샌드박스에서 구매 지우기 (0) | 2023.06.05 |
Xcode 9 문제 수정: "iPhone 사용 중: iPhone에 대한 디버거 지원 준비 중" (0) | 2023.06.05 |
UI 테이블 보기 섹션 사이의 공간 줄이기 (0) | 2023.06.05 |