Firebase OSX简单登录电子邮件/传递奇怪

时间:2014-05-11 20:11:43

标签: objective-c macos firebase

我正在使用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;
}

无论如何,我可以通过修改这一小块代码继续工作以满足我的需求。

1 个答案:

答案 0 :(得分:3)

是的,你是对的。访问钥匙串时出错。

要清除自己计算机上的错误,您可以转到Keychain Access,搜索&#39; firebase&#39;在右上角。您应该获得名为https://auth.firebase.com的项目。点击它。检查Firebase_<YOUR_FIREBASE_NAME>字段是否显示Account,然后继续删除。下次启动应用时,您将不得不再次登录。

当您尝试多次同时敲击同一个钥匙串项时,这似乎会显示出来。慢慢地多次访问钥匙串似乎很好,所以除非有人在同一台机器上验证许多相同的应用程序,否则你不应该得到错误。 (如果你能以其他方式点击它,请分享!)