我正在使用SimpleLogin和电子邮件/密码身份验证为现有的firebase设置一个非常基本的OSX应用程序。
这是我正在使用的代码。
- (void) applicationDidFinishLaunching:(NSNotification *)notification {
Firebase* ref = [[Firebase alloc] initWithUrl:@"https://myapp.firebaseio.com"];
FirebaseSimpleLogin* authClient = [[FirebaseSimpleLogin alloc] initWithRef:ref];
[authClient loginWithEmail:@"myemail@mydomain.com" andPassword:@"mypassword"
withCompletionBlock:^(NSError* error, FAUser* user) {
if (error != nil) {
// There was an error logging in to this account
NSLog(@"authClient login error: %@", error);
} else {
NSLog(@"Login success.");
}
}];
}
登录成功,我看到了日志输出。但是,“FAUser * user”为零。怎么样?为什么? 在线搜索/现有的SO问题没有帮助..
有什么想法吗?
**更新**
iOS中的相同代码按预期工作。这只是一个OSX问题吗?
**更新2 **
我直接在我的OSX项目中编译了Firebase / Objective-C简单登录服务(似乎只引用iOS)的源代码,发现登录服务试图存储时出现“重复项”错误代码OSX上的钥匙串数据。
密钥链保存操作之后的源代码然后继续返回空用户。我相信这里存在一个逻辑错误,因为if语句只要不是成功代码就会求值为true(跳过重复项的特殊情况):
if (status != noErr) {
user = nil;
}
else if (status == errSecDuplicateItem) {
// TODO: log an error?
user = nil;
}
无论如何,我可以通过修改这一小块代码继续工作以满足我的需求。
答案 0 :(得分:3)
要清除自己计算机上的错误,您可以转到Keychain Access,搜索' firebase'在右上角。您应该获得名为https://auth.firebase.com
的项目。点击它。检查Firebase_<YOUR_FIREBASE_NAME>
字段是否显示Account
,然后继续删除。下次启动应用时,您将不得不再次登录。
当您尝试多次同时敲击同一个钥匙串项时,这似乎会显示出来。慢慢地多次访问钥匙串似乎很好,所以除非有人在同一台机器上验证许多相同的应用程序,否则你不应该得到错误。 (如果你能以其他方式点击它,请分享!)