在Android版Firebase中忘记密码

我相信他们是在Firebase中更改密码的一种方式,但这是用户忘记密码并可以分配新密码或使用电子邮件或SMS OTP重新进行身份validation的方式。 我检查了网络,但似乎无法find一个。

如果有什么办法可以实现,那么所有的函数调用都需要进行。 你能指导我一个例子吗?

这听起来像你想发送密码重置电子邮件。 从Firebase文档中查看此示例 :

FirebaseAuth.getInstance().sendPasswordResetEmail("user@example.com") .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task 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() { @Override public void onComplete(@NonNull Task 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文件

               

这个链接到文档应该帮助你:

文档

简而言之,Firebase有一个使用方法叫做changePassword,请点击链接来了解如何实现它。

复制和粘贴文件 :

 FirebaseAuth auth = FirebaseAuth.getInstance(); String emailAddress = "user@example.com"; auth.sendPasswordResetEmail(emailAddress) .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } }); 

下面是简单的方法发送重置密码链接在用户的电子邮件地址与进展对话框(有时Firebase需要时间来完成重置密码请求,因为在客户端的互联网连接速度慢,所以进度对话框将有助于)

 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() { @Override public void onComplete(@NonNull Task 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 } })