Inicio de sesión con Facebook para iOS: inicio rápido

Hemos hecho un cambio en los extremos del inicio de sesión limitado y ahora se puede acceder desde limited.facebook.com.

Cuando las personas inician sesión en tu aplicación con Facebook, le conceden permiso para obtener información o realizar acciones en la plataforma en su nombre.

Estos son los pasos para añadir el inicio de sesión con Facebook a tu proyecto para iOS.

1. Inicio de sesión

Entra en Facebook para crear aplicaciones o regístrate como desarrollador.

2. Configurar el entorno de desarrollo

Configura el entorno de desarrollo antes de utilizar el inicio de sesión con Facebook para iOS.

Uso del administrador de paquetes Swift (SPM)
  1. En Xcode, haz clic en File > Swift Packages > Add Package Dependency (Archivo > Paquetes Swift > Añadir dependencia de paquetes).
  2. En el cuadro de diálogo que aparece, escribe la URL del repositorio: https://github.com/facebook/facebook-ios-sdk.
  3. En Version (Versión), escribe el número de versión del SDK de Facebook para iOS más reciente.
  4. Sigue las indicaciones para seleccionar las bibliotecas que quieras usar en el proyecto.

3. Registrar y configurar la aplicación para que funcione con Facebook

Registra y configura la aplicación para poder usar el inicio de sesión con Facebook; para ello, añade el identificador de paquete.

Debes entrar para completar este paso.

4. Configurar un proyecto

Configura el archivo Info.plist con un fragmento de código XML que contenga datos sobre tu aplicación.

Al integrar el inicio de sesión con Facebook, determinados eventos de la aplicación se registran y recopilan automáticamente para el Administrador de eventos, a menos que desactives el registro automático de eventos de la aplicación. Para obtener información más detallada sobre los datos que se recopilan y cómo desactivar el registro automático de eventos de la aplicación, consulta Registro automático de eventos de la aplicación.

  1. Haz clic con el botón derecho en el archivo Info.plist y elige Open as ▸ Source Code (Abrir como ▸ Código fuente).
  2. Copia y pega el siguiente fragmento de código XML en el cuerpo de tu archivo (<dict>...</dict>).
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fbAPP-ID</string>
      </array>
      </dict>
    </array>
    <key>FacebookAppID</key>
    <string>APP-ID</string>
    <key>FacebookClientToken</key>
    <string>CLIENT-TOKEN</string>
    <key>FacebookDisplayName</key>
    <string>APP-NAME</string>
  3. En <array><string>, en la clave [CFBundleURLSchemes], reemplaza APP-ID por el identificador de la aplicación.
  4. En <string>, en la clave FacebookAppID, reemplaza APP-ID por el identificador de la aplicación.
  5. En <string>, en la clave FacebookClientToken, reemplaza CLIENT-TOKEN por el valor que puedes encontrar en el panel de aplicaciones bajo Configuración > Opciones avanzadas > Identificador de cliente.
  6. En <string>, en la clave FacebookDisplayName, reemplaza APP-NAME por el nombre de la aplicación.
  7. Para usar los cuadros de diálogo de Facebook (p. ej., de inicio de sesión, contenido compartido, invitaciones a la aplicación, etc.) que pueden cambiar a las aplicaciones de Facebook, el elemento Info.plist de la aplicación también debe incluir lo siguiente:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

Para establecer directamente la recopilación automática de eventos de la aplicación en “true” o “false”, añade FacebookAutoLogAppEventsEnabled como clave en Info.plist.

El proyecto deberá incluir la función de uso compartido de cadenas de claves para que el inicio de sesión funcione en aplicaciones de Mac Catalyst.
  1. Selecciona el botón + Capability (+ Función) en la pestaña Signing & Capabilities (Firma y funciones) al configurar el destino de la aplicación.
  2. Busca y selecciona la función Keychain Sharing (Uso compartido de cadenas de claves).
  3. Asegúrate de que la función Keychain Sharing (Uso compartido de cadenas de claves) se enumera para el destino.

5. Conectar el delegado de la aplicación

Sustituye el código del método AppDelegate.swift por el código siguiente. Este código inicializa el SDK cuando se inicia tu aplicación y permite que el SDK gestione los inicios de sesión y el uso compartido de la aplicación de Facebook nativa cuando realizas la acción de iniciar sesión o compartir contenido. De lo contrario, el usuario debe tener la sesión iniciada en Facebook para usar el navegador en la aplicación a fin de iniciar sesión.
    
// AppDelegate.swift
import UIKit
import FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {    
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {          
        ApplicationDelegate.shared.application(
            application,
            didFinishLaunchingWithOptions: launchOptions
        )

        return true
    }
          
    func application(
        _ app: UIApplication,
        open url: URL,
        options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
        ApplicationDelegate.shared.application(
            app,
            open: url,
            sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
            annotation: options[UIApplication.OpenURLOptionsKey.annotation]
        )
    }  
}

iOS 13 ha trasladado la funcionalidad de apertura de URL a SceneDelegate. Si usas iOS 13, añade el método siguiente a SceneDelegate para que operaciones como el inicio de sesión o la función para compartir contenido funcionen según lo previsto:
// SceneDelegate.swift
import FacebookCore
  ...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }

    ApplicationDelegate.shared.application(
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
}

6. Añadir el inicio de sesión con Facebook al código

Usa el botón de inicio de sesión con Facebook en tu aplicación para iOS.

6a. Añadir el inicio de sesión con Facebook al código

Para añadir un botón “Iniciar sesión” con la marca de Facebook a la aplicación, añade el siguiente fragmento de código a un controlador de vista.
// Add this to the header of your file, e.g. in ViewController.swift 
import FacebookLogin

// Add this to the body
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
	
        let loginButton = FBLoginButton()
        loginButton.center = view.center
        view.addSubview(loginButton)
    }
}
En este punto, deberías poder ejecutar la aplicación y entrar usando el botón “Iniciar sesión” de Facebook.

6b. Comprobar el estado de inicio de sesión actual

En tu aplicación solo puede haber una persona con la sesión iniciada a la vez. Representamos a cada persona que ha iniciado sesión en tu aplicación mediante el objeto AccessToken.current.
El objeto LoginManager establece este identificador automáticamente y, cuando define el objeto AccessToken.current, también lo escribe de forma automática en el almacén de cadenas de claves.
El objeto AccessToken contiene el elemento userID, que puedes utilizar para identificar al usuario.
Debes actualizar el controlador de vista para buscar un identificador existente durante la carga. De esta manera, no se vuelve a mostrar el proceso de inicio de sesión si alguien que ya tiene permisos en tu aplicación realiza las siguientes acciones:
override func viewDidLoad() {
    super.viewDidLoad()

    if let token = AccessToken.current,
        !token.isExpired {
        // User is logged in, do work such as go to next view controller.
    }
}
    

6c. Solicitar permisos

Al usar el inicio de sesión con Facebook, tu aplicación puede solicitar los permisos de un subconjunto de datos de un usuario. El inicio de sesión con Facebook requiere que los usuarios externos utilicen el permiso avanzado public_profile.
Permisos de lectura para el botón “Iniciar sesión” de Facebook
Para solicitar permisos de lectura adicionales, establece la propiedad permissions en el objeto FBLoginButton.
// Extend the code sample from 6a. Add Facebook Login to Your Code
// Add to your viewDidLoad method:
loginButton.permissions = ["public_profile", "email"]
  
De esta manera, se le pedirá al usuario que conceda los permisos solicitados a tu aplicación. Ten en cuenta que algunos permisos requerirán una revisión del inicio de sesión. Consulta Administración de permisos para obtener más información al respecto.

7. Siguientes pasos

Enhorabuena. Has añadido el inicio de sesión con Facebook a tu aplicación para iOS. No olvides consultar el resto de páginas de documentación para acceder a guías más avanzadas.
Implementa una devolución de llamada de eliminación de datos para responder a la solicitud de los usuarios para eliminar sus datos de Facebook.
Añade eventos a tu aplicación para ver estadísticas, medir el rendimiento publicitario y crear públicos para segmentar los anuncios.
Consulta nuestra guía de configuración avanzada para obtener más información sobre el inicio de sesión con Facebook en aplicaciones para iOS.
Administra los datos que se encuentran a disposición de tu aplicación a través del inicio de sesión con Facebook.
Descubre cómo responder a los errores que devuelve el SDK de Facebook.
Prueba y verifica el correcto funcionamiento del inicio de sesión con Facebook.
En función de los datos de Facebook que solicites a los usuarios que usen el inicio de sesión de la plataforma, es posible que tengas que enviar tu aplicación a revisión antes de lanzarla.