PFLoginViewController no muestra el button de inicio de session de Facebook con Swift

Aquí está mi código Swift:

let loginViewController = PFLogInViewController() loginViewController.delegate = self; loginViewController.signUpController.delegate = self; loginViewController.fields = PFLogInFields.Facebook self.presentViewController(loginViewController, animated: animated, completion: nil) 

He intentado todo lo posible, pero no sé por qué no muestra el button de inicio de session de Facebook. Simplemente muestra los campos pnetworkingeterminados.

Revisar otra vez:

  1. si tienes en appdelegate [PFFacebookUtils initializeFacebook]
  2. tienes que agregar, también PFLogInFieldsDismissButton
  3. también debe establecer la propiedad facebookPermissions en la list de los permissions que queremos otorgar por el usuario

Ejemplo para ObjC

 if (![PFUser currentUser]) { // Customize the Log In View Controller PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init]; [logInViewController setDelegate:self]; [logInViewController setFacebookPermissions:[NSArray arrayWithObjects:@"friends_about_me", nil]]; [logInViewController setFields: PFLogInFieldsFacebook | PFLogInFieldsDismissButton]; // Present Log In View Controller [self presentViewController:logInViewController animated:YES completion:NULL]; } 

Intente no establecer el delegado signUpController , así elimine la línea:

 loginViewController.signUpController.delegate = self 

EDIT: Parece ser un error en el SDK de Parse.

Lo solucioné estableciendo signUpController.delegate solo después de presentar loginViewController.

(Por lo tanto, presente el PFLoginViewController, con los campos de Facebook y Twitter incluidos, y solo después configure el delegado de signUpViewController).

Además, noté que en la versión actual de ParseUI (1.1.5), el button de inicio de session de Facebook no es compatible con emailAsUsername.

Por lo tanto, si tiene la siguiente línea:

 loginViewController.emailAsUsername = true 

el button de Facebook no aparecerá.

El siguiente código creó con éxito una pantalla de inicio de session con el button de Facebook; si puede ser de ayuda para alguien:

 import UIKit import Parse import ParseUI class ViewController: UIViewController, PFLogInViewControllerDelegate { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) // MARK: - ParseUI logIn / signUp screen let loginViewController = PFLogInViewController() loginViewController.delegate = self loginViewController.fields = ( PFLogInFields.UsernameAndPassword | PFLogInFields.LogInButton | PFLogInFields.SignUpButton | PFLogInFields.PasswordForgotten | // PFLogInFields.DismissButton | PFLogInFields.Facebook ) loginViewController.facebookPermissions = ["public_profile"] self.presentViewController(loginViewController, animated: true, completion: nil) } } 

EDITAR: el equipo de Parse me acaba de enviar por correo electrónico que definitivamente es un error que están investigando. ¡Espero que lo arreglen pronto!