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

Hicimos un cambio en los puntos de conexión del inicio de sesión limitado: ahora es posible acceder desde limited.facebook.com

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

Debes aplicar los siguientes pasos para agregar el inicio de sesión con Facebook a tu proyecto de iOS.

1. Iniciar sesión

Inicia sesión en Facebook para crear apps o regístrate como desarrollador.

2. Configurar el entorno de desarrollo

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

Uso del administrador de paquetes de Swift (SPM)
Disponible únicamente para Xcode 11.2 y posteriores.
  1. En Xcode, haz clic en File > Swift Packages > Add Package Dependency (Archivo > Paquetes de Swift > Agregar dependencia de paquetes).
  2. En el cuadro de diálogo que aparece, ingresa la URL del repositorio: https://github.com/facebook/facebook-ios-sdk.
  3. En Version (Versión), selecciona Up to Next Major (Hasta la siguiente superior) y deja la opción predeterminada.
  4. Completa las solicitudes para seleccionar las bibliotecas que deseas usar en el proyecto.

3. Registrar y configurar tu app en Facebook

Registra y configura tu app para usar el inicio de sesión con Facebook agregando el identificador de paquete.

Debes iniciar sesión para completar este paso.

4. Configurar el proyecto

Configura el archivo Info.plist con un fragmento de XML que contiene datos sobre tu app.

Después de que integras el inicio de sesión con Facebook, se registran y recopilan automáticamente determinados eventos de la app en el administrador de eventos, a menos que desactives el registro automático de eventos. Para obtener información sobre qué información se recopila y cómo desactivar el registro de eventos de la app de manera automática, consulta Registro automático de eventos de la app.

  1. Haz clic con el botón derecho en info.plist y elige Open As ▸ Source Code.
  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> de la clave [CFBundleURLSchemes], reemplaza [APP-ID] con el identificador de la app.
  4. En <string> de la clave FacebookAppID, reemplaza [APP-ID] con el identificador de la app.
  5. En <string> de la clave FacebookClientToken, reemplaza CLIENT-TOKEN con el valor encontrado en Configuración > Avanzado > Token del cliente del panel de apps.
  6. En <string> de la clave FacebookDisplayName, reemplaza [APP-NAME] por el nombre de la app.
  7. Para usar los cuadros de diálogo de Facebook (por ejemplo, inicio de sesión, contenido compartido, invitaciones a la app, etc.) con los que se puede cambiar de una app a las apps de Facebook, el archivo Info.plist de tu solicitud también debe incluir la siguiente información:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

Es posible configurar directamente la recopilación automática de eventos de la app en "verdadero" o "falso" si se agrega FacebookAutoLogAppEventsEnabled como clave en Info.plist.

El proyecto deberá incluir la función "Keychain Sharing" para que el inicio de sesión funcione en las apps de Mac Catalyst.
  1. Selecciona el botón + Capability en la pestaña Signing & Capabilities cuando configures el objetivo de la app.
  2. Busca y selecciona la función Keychain Sharing.
  3. Asegúrate de que la función Keychain Sharing esté disponible para el objetivo.

5. Conectar el delegado de la app

Reemplaza el código en el método AppDelegate.swift con el siguiente código. Este código inicializa el SDK cuando se inicia tu app y permite al SDK administrar inicios de sesión y compartir contenido desde la app nativa de Facebook cuando inicias sesión o compartes algo. De lo contrario, el usuario debe iniciar sesión en Facebook a fin de usar el navegador de la app para 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 movió la funcionalidad de la URL de apertura a SceneDelegate. Si usas iOS 13, agrega el siguiente método a SceneDelegate para que las operaciones como el inicio de sesión o el uso compartido 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. Agregar el inicio de sesión con Facebook al código

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

6a. Agregar el inicio de sesión con Facebook al código

Para añadir el botón "Iniciar sesión" con la marca de Facebook a la app, agrega 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, debes poder ejecutar la app e iniciar sesión usando el botón "Iniciar sesión con Facebook".

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

La app solo puede iniciar la sesión de una persona a la vez. Representamos mediante AccessToken.current a las personas que inician sesión en la app.
LoginManager establece este token por ti y, cuando establece AccessToken.current, también lo escribe de forma automática en el almacenamiento de llavero.
AccessToken contiene el identificador userID, con el que puedes identificar al usuario.
Debes actualizar el controlador de vista para comprobar durante la carga si hay tokens anteriores. Esto evita que se vuelva a mostrar de manera innecesaria el flujo de inicio de sesión si una persona ya le otorgó los permisos a tu app:
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, la app puede pedir permisos para acceder a un subconjunto de datos de una persona. El inicio de sesión con Facebook requiere el permiso public_profile avanzado, que utilizarán los usuarios externos.
Permisos de lectura del botón "Iniciar sesión con Facebook"
Para solicitar permisos de lectura adicionales, configura 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"]
  
Se le pedirá al usuario que le conceda a tu app los permisos solicitados. Ten en cuenta que algunos permisos necesitarán una revisión del inicio de sesión. Para obtener información sobre los permisos, consulta Administrar permisos.

7. Próximos pasos

¡Felicitaciones, agregaste el inicio de sesión con Facebook a tu app para iOS! No olvides de consultar el resto de las páginas de documentación para acceder a guías más avanzadas.
Implementa una devolución de llamada para eliminación de datos a fin de responder a las solicitudes que hacen las personas para que se eliminen sus datos de Facebook.
Agrega eventos a tu app para ver estadísticas, medir el rendimiento de los anuncios y crear públicos para segmentar anuncios.
Consulta nuestra guía de configuración avanzada para obtener información sobre el inicio de sesión con Facebook en apps para iOS.
Administra los datos a los que tiene acceso tu app 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.
Según los datos de Facebook que solicites a las personas que usan el inicio de sesión con Facebook, es posible que necesites enviar tu app a revisión antes de lanzarla.