Facebook登录解析iOS应用程序无法正常工作

时间:2023-01-22 17:42:20

I've added the facebook login button as described in the tutorial here. When I try testing this out however, the FB login button simply shows a loading indicator and the app freezes up. Is there any other integration I forgot to implement?

我已按照本教程中的说明添加了facebook登录按钮。然而,当我尝试测试时,FB登录按钮只显示一个加载指示器,应用程序冻结。我忘了实施其他任何集成吗?

AppDelegate.m:

- (BOOL)application:(UIApplication *)application
                        openURL:(NSURL *)url
              sourceApplication:(NSString *)sourceApplication
                     annotation:(id)annotation {

                return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                                  openURL:url
                                                        sourceApplication:sourceApplication
                                                               annotation:annotation];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
            [FBSDKAppEvents activateApp];
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

        // Start updating locations when the app returns to the foreground.
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        DefaultSettingsViewController *defaultSettingsViewController = [storyboard instantiateViewControllerWithIdentifier:@"DefaultSettingsViewController"];
        //[defaultSettingsViewController.locationManager stopUpdatingLocation];

        // Clear badge when app is opened
        PFInstallation *currentInstallation = [PFInstallation currentInstallation];
        if (currentInstallation.badge != 0) {
            currentInstallation.badge = 0;
            [currentInstallation saveEventually];
        }

        [FBSDKAppEvents activateApp];

        [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]];

 }

DefaultViewController.m:

- (void)_loginWithFacebook {
    // Set permissions required from the facebook user account
    NSArray *permissionsArray = @[ @"user_about_me", @"user_relationships", @"user_birthday", @"user_location"];

    // Login PFUser using Facebook
    [PFFacebookUtils logInInBackgroundWithReadPermissions: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!");
        }
    }];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    if (![PFUser currentUser]) { // No user logged in
        // Create the log in view controller
        PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init];
        [logInViewController setDelegate:self]; // Set ourselves as the delegate
        [logInViewController setFacebookPermissions:[NSArray arrayWithObjects:@"friends_about_me", nil]];
        [logInViewController setFields: PFLogInFieldsUsernameAndPassword | PFLogInFieldsLogInButton | PFLogInFieldsFacebook | PFLogInFieldsSignUpButton | PFLogInFieldsPasswordForgotten];

        // Create the sign up view controller
        PFSignUpViewController *signUpViewController = [[PFSignUpViewController alloc] init];
        [signUpViewController setDelegate:self]; // Set ourselves as the delegate

        // Assign our sign up controller to be displayed from the login controller
        [logInViewController setSignUpController:signUpViewController];

        // Present the log in view controller
        [self presentViewController:logInViewController animated:YES completion:NULL];
    } else {
        [self performSegueWithIdentifier:@"login" sender:self];
    }

}

1 个解决方案

#1


Can you re-run your app with a breakpoint on the line of code in DefaultViewController.m

您可以在DefaultViewController.m中的代码行上使用断点重新运行您的应用程序

[logInViewController setDelegate:self]; // Set ourselves as the delegate

And in the identity inspector tell me what objects it contains?

身份检查员告诉我它包含哪些对象?

I haven't had much experience with Parse, but it sounds like one of the frameworks may not be implemented properly. (if that's the case, it's a quick fix. you just re-download and put it back in your app)

我对Parse没有多少经验,但听起来其中一个框架可能无法正确实现。 (如果是这种情况,这是一个快速修复。你只需重新下载并将其放回你的应用程序)

#1


Can you re-run your app with a breakpoint on the line of code in DefaultViewController.m

您可以在DefaultViewController.m中的代码行上使用断点重新运行您的应用程序

[logInViewController setDelegate:self]; // Set ourselves as the delegate

And in the identity inspector tell me what objects it contains?

身份检查员告诉我它包含哪些对象?

I haven't had much experience with Parse, but it sounds like one of the frameworks may not be implemented properly. (if that's the case, it's a quick fix. you just re-download and put it back in your app)

我对Parse没有多少经验,但听起来其中一个框架可能无法正确实现。 (如果是这种情况,这是一个快速修复。你只需重新下载并将其放回你的应用程序)