我是第一次使用 iOS 设置 Firebase,我在使用 Facebook 身份验证设置的简单登录时遇到了一些问题。
问题
我在模拟器中运行它 - 这可能是我的问题,因为模拟器没有 Facebook 应用程序或 Facebook 集成?但我目前没有 Apple Developer 帐户。
我希望这会触发 Facebook 应用程序中的 Facebook 身份验证视图,或者如果设备上未安装该应用程序,请切换到 Safari 并使用正常的身份验证页面,但没有任何反应。
设置
据我了解,这些是使其运行的最低要求:
- 一个 Facebook 应用程序:
- Facebook 登录 URL 定义为的网站:https ://auth.firebase.com/auth/facebook/callback
- 与 XCode 项目目标摘要中的 Bundle 标识符匹配的原生 iOS 应用程序 Bundle ID
- 一个 iOS 项目:
- 将二进制文件与库链接:
- Firebase.framework
- Foundation.framework(显然...... :))
- libicucore.lib
- 安全框架
- CFNetwork.framework
- FirebaseAuthClient.framework
- Accounts.framework
- 社会框架
- -ObjC 在其他链接器标志下
- 将 Bundle 标识符与 Facebook 应用 Bundle ID 匹配
- 将二进制文件与库链接:
- 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 模拟器问题?