正在开发我的第一个 iOS 应用程序(实际上是有史以来的第一个应用程序)!我正在尝试实现与 Parse 的 PFUser 一起使用的 facebook 登录屏幕。
我有一个 UIButton“使用 Facebook 登录”,它使用以下代码连接到一个操作:
-(IBAction) facebookLogin:(id)sender {
[PFFacebookUtils logInInBackgroundWithReadPermissions:self.permissions block:^(PFUser *user, NSError *error) {
if (!user) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew) {
NSLog(@"User signed up and logged in through Facebook!");
} else {
NSLog(@"User logged in through Facebook!");
}
}];
}
我在哪里
@property (strong, nonatomic) NSArray *permissions;
和
self.permissions = @[@"public_profile"];
所以它运行良好,但是当我在 Ios 模拟器中按下“使用 FaceBook 登录”按钮时,应用程序终止并且我在终端中看到以下内容:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“您必须通过调用 +initializeFacebookWithApplicationLaunchOptions 来初始化 PFFFacebookUtils”
这对我来说没有意义,因为在我的 AppDelegate.m 文件中我已经初始化了 Facebook:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Parse enableLocalDatastore];
[Parse setApplicationId:@"..."
clientKey:@"..."];
return [[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];
return 1;
}
如果有任何帮助,我将不胜感激!
最佳答案
如果第二个示例代码正确,它将返回语句:
return [[FBSDKApplicationDelegate sharedInstance] application:application
并且不执行以下行。从该语句中删除 return
,以便执行以下语句。
也因为:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
必须返回一个BOOL
,返回语句应该是YES
,而不是1
。 Objectice 中的 bool 值是 YES
和 NO
。
关于ios - 未捕获的异常 'NSInternalInconsistencyException' 必须通过调用 +initializeFacebookWithApplicationLaunchOptions 来初始化 PFFFacebookUtils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131171/