我最近换了新的火力架。当我使用遗留代码时,我能够毫无问题地重置用户电子邮件。现在使用新的firebase我不断收到错误“发生内部错误。[错误代码:13]”。即使我在应用控制台上点击密码重置按钮,我也会在控制台上收到相同的错误消息。我还遵循了网站上有关如何重置用户密码的所有说明。
这是我的代码:
private void resetPassword() {
String email = mEmailEditText.getText().toString();
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(LoginActivity.this, R.string.sent_temp_password,
Toast.LENGTH_LONG).show();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i(TAG, e.getMessage());
}
});
}
对于为什么会发生这种情况的任何帮助都将非常感谢!
答案 0 :(得分:3)
我最近也切换到了新的Firebase控制台。我在身份验证方面遇到了很多问题,但我找不到任何解决方案。我在文件上备份了数据库和规则,然后我删除了Firebase项目并创建了一个新项目(从头开始,重新创建了Firebase项目,除了数据库和我保存的规则预先)。有效。我想将Firebase项目从旧控制台转换为新的Firebase控制台有很多问题。
如果您没有找到任何其他解决方案,我建议您也这样做,这不会花费太长时间。
答案 1 :(得分:1)
在新的Firebase版本中,在任何用户发生重大更改(更改用户的密码或电子邮件或删除用户)之前,用户必须最近已登录。所以为了保证有效的响应,你需要在调用change方法之前使用reauthenticate方法...
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
AuthCredential credential = EmailAuthProvider
.getCredential("user@example.com", "password1234");
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "User re-authenticated.");
//Here you can can insert your code
}
});
答案 2 :(得分:0)
只是澄清一下类似的情况。这发生在所有用户身上。我没有太多专注于这个数据库。重建,并会回来,但它以前能够进行身份验证是很奇怪的。请注意,我不是从一个旧的火力控制台来到一个新的。这个项目是一个全新的控制台。