1

我是第一次使用 iOS 设置 Firebase,我在使用 Facebook 身份验证设置的简单登录时遇到了一些问题。

问题

我在模拟器中运行它 - 这可能是我的问题,因为模拟器没有 Facebook 应用程序或 Facebook 集成?但我目前没有 Apple Developer 帐户。

我希望这会触发 Facebook 应用程序中的 Facebook 身份验证视图,或者如果设备上未安装该应用程序,请切换到 Safari 并使用正常的身份验证页面,但没有任何反应。

设置

据我了解,这些是使其运行的最低要求:

  1. 一个 Facebook 应用程序:
  2. 一个 iOS 项目:
    • 将二进制文件与库链接:
      • Firebase.framework
      • Foundation.framework(显然...... :))
      • libicucore.lib
      • 安全框架
      • CFNetwork.framework
      • FirebaseAuthClient.framework
      • Accounts.framework
      • 社会框架
    • -ObjC 在其他链接器标志下
    • 将 Bundle 标识符与 Facebook 应用 Bundle ID 匹配
  3. Facebook 应用 ID 和应用机密添加到 Firebase Forge 中的 Auth

在此处查看我的 Facebook 应用程序设置(屏幕截图): http: //flashpatric.com/wp-content/uploads/2013/03/facebookSetup.png

代码:

Firebase* ref = [[Firebase alloc] initWithUrl:@"https://xxx.firebaseio.com"];
FirebaseAuthClient* authClient = [[FirebaseAuthClient alloc] initWithRef:ref];

[authClient loginToFacebookAppWithId:@"xxx-facebook-app-id-xxx" permissions:@[@"email"] withCompletionBlock:^(NSError *error, FAUser *user) {
    if (error != nil) {
        // There was an error logging in
        NSLog(@"There was an error logging in: code = %d", [error code]);
        NSLog(@"%@", error);
    } else {
        // We have a logged in facebook user
        NSLog(@"We have a logged in facebook user: %@",user);
    }
}];

[authClient checkAuthStatusWithBlock:^(NSError* error, FAUser* user) {
    if (error != nil) {
        NSLog(@"Oh no! There was an error performing the check %@",error);
    } else if (user == nil) {
        NSLog(@"No user is logged in");
    } else {
        NSLog(@"There is a logged in user %@",user);
    }
}];

输出:

2013-03-27 11:10:08.900 firebase[18729:1303] There was an error logging in: code = 6
2013-03-27 11:10:08.905 firebase[18729:1303] Error Domain=com.apple.accounts Code=6 The operation couldn’t be completed. (com.apple.accounts error 6.)
2013-03-27 11:10:08.924 firebase[18729:c07] No user is logged in

好的,我在这里遗漏了一些明显的东西,还是我的问题只是 iOS 模拟器问题?

4

1 回答 1

2

你需要一些东西来使用 Facebook auth,它应该在模拟器上工作:

  1. Facebook 上的应用程序设置。听起来你已经有了这个
  2. 在您的模拟器上设置 Facebook 帐户。目前,FirebaseAuthClient 不与 Facebook 应用程序交互,它只是使用内置于 iOS 的原生 Facebook 集成。
  3. 确保您拥有最新版本的 FirebaseAuthClient。截至目前,它是 1.0.1,您可以在这里获得它:https ://www.firebase.com/docs/downloads.html
  4. 确保您已在 Forge 中启用 Facebook 身份验证。从您的描述看来,您已经这样做了。

根据您收到的错误,我的猜测是您缺少第 2 步。在您的模拟器上,转到“设置”->“Facebook”并登录到一个帐户。

于 2013-03-27T16:24:00.440 回答