Jim*_*xas 6 android firebase-authentication
我正在将Android应用程序从旧版本迁移到新的Firebase平台.如果给出一个未知的电子邮件字符串,我似乎无法使sendPasswordResetEmail按照电子邮件/密码身份验证的文档工作.
文件说:
public Task sendPasswordResetEmail(String email)
触发Firebase身份验证后端,将密码重置电子邮件发送到指定的电子邮件地址,该地址必须与您应用的现有用户相对应.
例外:
如果没有与给定电子邮件地址对应的用户,则抛出FirebaseAuthInvalidUserException返回任务以跟踪发送操作的完成
这是我的pw重置方法:
// firebase password reset
private void requestPwReset() {
String email = mEmailView.getText().toString();
Log.d(TAG, "sending pw reset request for: " + email);
try {
Task<Void> task = mAuth.sendPasswordResetEmail(email);
Log.d("TAG", "result: " + (task.isSuccessful() == true) ); // NEVER SUCCEEDS, EVEN WITH VALID EMAIL ADDRESS
} catch(FirebaseAuthInvalidUserException e) { //COMPILE ERROR HERE!
Log.d(TAG, "exception: " + e.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
调用此方法会导致此编译时错误(IDE也会标记):
LoginActivity.java:117:错误:异常FirebaseAuthInvalidUserException永远不会在相应的try语句的主体中抛出} catch(FirebaseAuthInvalidUserException e){
如果我省略了try-catch代码,那么该方法将编译,但返回的任务永远不会成功,即使已知良好的电子邮件地址也是如此.
好消息是Firebase最终会将重置发送到好的地址,但我想知道为什么如果给出一个有效的电子邮件,如果给出一个未知的用户电子邮件或一个成功的Task,sendPasswordResetEmail不会抛出记录的异常.
我确实在5月18日的发行说明中看到这个功能存在iOS问题.
Spa*_*arq 12
FirebaseAuth.sendPasswordResetEmail(...)返回一个任务.
A Task表示异步完成的最终结果.这也是为什么在您提出请求后检查它是否已立即完成时task.isSuccessful()将返回的原因false.
你应该做的是:
mAuth.sendPasswordResetEmail(email)
.addOnSuccessListener(new OnSuccessListener() {
public void onSuccess(Void result) {
// send email succeeded
}
}).addOnFailureListener(new OnFailureListener() {
public onFailure(Exception e)
// something bad happened
}
});
| 归档时间: |
|
| 查看次数: |
3997 次 |
| 最近记录: |