我们的应用使用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的问题,如果它还没有被抓住,那会让我感到惊讶。我可能只是在做头发脑力训练。有什么想法吗?谢谢!
答案 0 :(得分:1)
有一个错误影响了Firebase简单登录的iOS和Android客户端库,该错误已在最新版本(Simple Login iOS v1.3.3和Simple Login Android v1.4.1)中修复。
另请注意,Firebase简单登录客户端是开源的。查看https://github.com/firebase/firebase-simple-login以获取Web客户端以及指向Android和iOS客户端的链接。如果您遇到错误,请不要犹豫提交!
答案 1 :(得分:0)
我使用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的实现,但找不到任何错误。