firebase changePassword 不会因旧密码不正确而引发错误

Posted

技术标签:

【中文标题】firebase changePassword 不会因旧密码不正确而引发错误【英文标题】:firebase changePassword doesn't throw error for incorrect old password 【发布时间】:2014-05-15 22:59:20 【问题描述】:

我们的应用使用 Firebase 简单登录。它似乎工作得很好,包括它们包含的大多数额外调用,如 resetPassword。

changePasswordForEmail 似乎也有效。当用户给它正确的旧密码和新密码时,它会正确地重置密码。但是当你给它错误的旧密码时,它不会抛出错误。我给它一个错误的旧密码时打印了成功和错误:

成功是:1

错误是:(null)

我们用户客户端中的代码:

[AuthClient changePasswordForEmail:email oldPw:oPw newPw:nPw completionBlock:^(NSError *error, BOOL success) 
    NSLog(@" Success is: %hhd",success);
    NSLog(@" Error is: %@",error);
    [[NSNotificationCenter defaultCenter] postNotificationNameOnMainThread:kNotificationUserUpdateAccountInfo object:self userInfo:@@"error":error?error:[NSNull null]];
    if (error) 
        [UIAlertView showAlertWithError:error];
        return;
    

在我们的 authClient 内部

+ (void)changePasswordForEmail:(NSString *)email oldPw:(NSString *)oPw newPw:(NSString *)nPw completionBlock:(ClientCallbackSuccess)block

    FirebaseSimpleLogin *authClient = [[FirebaseSimpleLogin alloc] initWithRef:[ClientBase shared].root];
    [authClient changePasswordForEmail:email oldPassword:oPw newPassword:nPw completionBlock:^(NSError *error, BOOL success) 
        if (block)
            block(error, success);
    ];

如果这实际上是 api 的问题,如果它还没有被捕获,我会感到惊讶。我可能只是在做一些脑筋急转弯的事情。有什么想法吗?谢谢!

【问题讨论】:

[Firebase 工程师] 我正在研究这个问题,应该会在接下来的几天内得到答案/解决方案。 有解决方案吗?我发现了同样的问题,密码重置得很好,代码似乎都在工作,只是 SUCCESS 布尔值总是返回为 1,这意味着当用户输入错误的先前密码时我们无法提醒用户 【参考方案1】:

存在影响 Firebase 简单登录的 iosandroid 客户端库的错误,该错误已在最新版本(Simple Login iOS v1.3.3 和 Simple Login Android v1.4.1)中得到修复。

另请注意,Firebase 简单登录客户端是开源的。查看https://github.com/firebase/firebase-simple-login 以获取 Web 客户端和 Android 和 iOS 客户端的链接。如果您遇到错误,请不要犹豫,提交它们!

【讨论】:

【参考方案2】:

我在使用适用于 Android 的 firebase sdk 时遇到了同样的问题。通过简单登录的身份验证工作正常,但 changePassword 始终返回错误值 null。但 API 似乎工作正常,因为 ADB 输出控制台上出现错误消息。

ADB 控制台上的服务器响应

    
    "error": 
     "message": "The specified password is incorrect.",
     "code": "INVALID_PASSWORD"
     
    

来自 changePassword 的响应

Error = null, success = 1

我已经在https://github.com/firebase/firebase-simple-login-java/blob/master/src/main/java/com/firebase/simplelogin/SimpleLogin.java 上查看了 api 的实现,但找不到任何错误。

【讨论】:

以上是关于firebase changePassword 不会因旧密码不正确而引发错误的主要内容,如果未能解决你的问题,请参考以下文章

Angular - 预期的调用签名:'changePassword' 有一个 typedeftslint(typedef)

ASP.NET ChangePassword 控件停止工作

Membership ChangePassword(散列)将当前密码与旧密码字段匹配

/change-password/ 处的 ValueError 视图 authapp.views.ChangePassword 未返回 HttpResponse 对象。它返回 None 而不是

用shell判断远程主机上是否存在某个文件

使用带有角度的引用变量的复选框的值显示div