尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序

Posted

技术标签:

【中文标题】尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序【英文标题】:Trying to add facebook to app with parse and app crashes 【发布时间】:2014-01-03 04:00:29 【问题描述】:

我正在尝试将 Facebook 添加到我的应用中,这就是我在视图控制器中所做的:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
        self.loginViewController = [[PFLogInViewController alloc] init];
        [self.loginViewController setDelegate:self];
        [self.loginViewController setFields:PFLogInFieldsFacebook];
        [self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
    
    return self;
 

- (IBAction)faceBookLoginPressed:(id)sender 
    [self presentViewController:self.loginViewController animated:NO completion:NULL];

这会导致应用程序崩溃,我明白了:

由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'应用程序试图呈现一个 目标上的 nil 模态视图控制器。'

在我的应用程序委托中:

 [Parse setApplicationId:@“********************************************"
               clientKey:@"********************************************"];
 [PFFacebookUtils initializeFacebook];

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];

这就是我迈出的第一步。我要做的就是让我的应用程序进入网络并让我像这样登录 Facebook:

https://www.parse.com/tutorials/scrumptious

到目前为止,我对 Parse 很困惑,所以请耐心等待。提前致谢。

【问题讨论】:

您是否提供了您的 applicationID 和 ClientKey 来初始化 Parse? 是的,我做到了。我只是把它们掩盖了 你的崩溃日志是什么 您使用的是 XIB 还是故事板? 故事板,我试试你的答案@i_duhh_bomb 【参考方案1】:

通常导致 ViewController 为 nil 的原因是它没有被初始化。虽然我可以在您的代码中看到您在此处完成了该操作:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
        self.loginViewController = [[PFLogInViewController alloc] init];
        [self.loginViewController setDelegate:self];
        [self.loginViewController setFields:PFLogInFieldsFacebook];
        [self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
    
    return self;
 

问题是,我认为只有当你有笔尖时才会调用它。如我错了请纠正我。因为我在您的代码中看不到任何其他错误。我将假设您正在使用情节提要。如果是这种情况,请替换:

- (IBAction)faceBookLoginPressed:(id)sender 
    [self presentViewController:self.loginViewController animated:NO completion:NULL];

有了这个

- (IBAction)faceBookLoginPressed:(id)sender 
    self.loginViewController = [[PFLogInViewController alloc] init];
    [self.loginViewController setDelegate:self];
    [self.loginViewController setFields:PFLogInFieldsFacebook];
    [self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
    [self presentViewController:self.loginViewController animated:NO completion:NULL];

然后继续删除这个:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
        self.loginViewController = [[PFLogInViewController alloc] init];
        [self.loginViewController setDelegate:self];
        [self.loginViewController setFields:PFLogInFieldsFacebook];
        [self.loginViewController setFacebookPermissions:[NSArray arrayWithObjects:@"user_about_me", nil]];
    
    return self;

希望是这样!

【讨论】:

以上是关于尝试通过解析和应用程序崩溃将 Facebook 添加到应用程序的主要内容,如果未能解决你的问题,请参考以下文章

初始化 Facebook 实用程序

无法通过 Facebook 登录(解析):错误代码 251

android 应用程序在首次尝试在发布模式下使用 Facebook sdk 共享数据时崩溃

Facebook 登录按钮导致崩溃

当我尝试登录注册用户并通过解析启用推送通知时,我的应用程序崩溃

在 Swift 中链接/合并 Facebook 用户和 PFUser(解析)