Configurar Facebook como un IdP de grupos de identidades - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar Facebook como un IdP de grupos de identidades

Los grupos de identidades de Amazon Cognito se integran en Facebook para ofrecer una autenticación federada a los usuarios de aplicaciones móviles. En esta sección se explica cómo registrar y configurar su aplicación con Facebook como IdP.

Configuración de Facebook

Registre su aplicación en Facebook para poder empezar a autenticar usuarios de Facebook e interactuar con las API de Facebook.

El portal para desarrolladores de Facebook le ayuda a configurar la aplicación. Siga este procedimiento antes de integrar Facebook en su grupo de identidades de Amazon Cognito:

Configuración de Facebook
  1. En el portal de desarrolladores de Facebook, inicie sesión con sus credenciales de Facebook.

  2. En el menú Apps (Aplicaciones), seleccione Add a New App (Añadir una nueva aplicación).

  3. Seleccione una plataforma y complete el proceso de inicio rápido.

Android

Para obtener más información sobre cómo integrar aplicaciones Android con el inicio de sesión de Facebook, consulte la guía de introducción a Facebook.

iOS - Objective-C

Para obtener más información sobre cómo integrar aplicaciones iOS Objective-C con el inicio de sesión de Facebook, consulte la guía de introducción a Facebook.

iOS - Swift

Para obtener más información sobre cómo integrar aplicaciones iOS Swift con el inicio de sesión de Facebook, consulte la guía de introducción a Facebook.

JavaScript

Para obtener más información sobre cómo integrar aplicaciones JavaScript web con el inicio de sesión de Facebook, consulta la Guía de introducción de Facebook.

Unity

Para obtener más información sobre cómo integrar aplicaciones Unity con el inicio de sesión de Facebook, consulte la guía de introducción a Facebook.

Xamarin

Para añadir la autenticación de Facebook, empiece por seguir el flujo adecuado a continuación para integrar el SDK de Facebook en su aplicación. En los grupos de identidades de Amazon Cognito, se utiliza el token de acceso de Facebook para generar un identificador de usuario único asociado a una identidad de Amazon Cognito.

Configurar un proveedor de identidades en la consola de grupos de identidades de Amazon Cognito

Utilice el siguiente procedimiento para configurar el proveedor de identidades.

Para agregar un proveedor de identidades (IdP) de Facebook
  1. Elija Grupos de identidades en la consola de Amazon Cognito. Seleccione un grupo de identidades.

  2. Elija la pestaña Acceso de usuario.

  3. Seleccione Agregar proveedor de identidades.

  4. Elija Facebook.

  5. Ingrese el ID de aplicación del proyecto de OAuth que creó en Meta para desarrolladores. Para obtener más información, consulte Inicio de sesión de Facebook en Meta para documentos de desarrolladores.

  6. Para establecer el rol que Amazon Cognito solicita cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Configuración del rol.

    1. Puede asignar a los usuarios de ese IdP el Rol predeterminado que configuró al configurar el Rol autenticado o puede Elegir el rol con reglas.

      1. Si eligió Elegir rol con reglas, ingrese la Reclamación de origen de la autenticación del usuario, el Operador con el que desea comparar la afirmación, el Valor que hará que coincida con esta elección de rol y el Rol que desea asignar cuando la Asignación del rol coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.

      2. Elija una Resolución de rol. Cuando las reclamaciones del usuario no coinciden con las reglas, puede denegar las credenciales o emitir credenciales para el Rol autenticado.

  7. Para cambiar las etiquetas de la entidad principal que Amazon Cognito asigna cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Atributos para el control de acceso.

    1. Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.

    2. Para aplicar etiquetas de entidades principales en función de las reclamaciones sub y aud, elija Usar mapeos predeterminados.

    3. Para crear su propio esquema personalizado de atributos para las etiquetas de la entidades principales, elija Usar mapeos personalizados. A continuación, ingrese una Clave de etiqueta que desee obtener de cada Reclamación que desee representar en una etiqueta.

  8. Seleccione Guardar cambios.

Uso de Facebook

Android

Para añadir la autenticación de Facebook, empiece por seguir la guía de Facebook para integrar el SDK de Facebook en su aplicación. A continuación, añada un botón Iniciar sesión con Facebook a la interfaz de usuario de Android. El SDK de Facebook utiliza un objeto de sesión para realizar seguimiento de su estado. Amazon Cognito utiliza el token de acceso de este objeto de sesión para autenticar al usuario, generar el identificador único y, si es necesario, conceder al usuario acceso a otros recursos. AWS

Una vez que haya autenticado a su usuario con el SDK de Facebook, agregue el token de sesión al proveedor de credenciales de Amazon Cognito.

SDK de Facebook 4.0 o posterior:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); credentialsProvider.setLogins(logins);

SDK de Facebook antes de la versión 4.0:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", Session.getActiveSession().getAccessToken()); credentialsProvider.setLogins(logins);

El proceso de inicio de sesión de Facebook inicializa una sesión singleton en su SDK. El objeto de sesión de Facebook contiene un token de OAuth que Amazon Cognito utiliza para AWS generar las credenciales del usuario final autenticado. Amazon Cognito también utiliza el token para buscar la existencia de un usuario que corresponda a esta identidad de Facebook en concreto en su base de datos. Si el usuario ya existe, la API devuelve el identificador existente. De lo contrario, la API devuelve un identificador nuevo. El SDK cliente guarda en caché los identificadores automáticamente en el dispositivo local.

nota

Después de configurar el mapa de inicios de sesión, realice una llamada refresh o get recupere las credenciales. AWS

iOS - Objective-C

Para añadir la autenticación de Facebook, empiece por seguir la guía de Facebook para integrar el SDK de Facebook en su aplicación. A continuación, añada un botón "Iniciar sesión con Facebook" a la interfaz de usuario. El SDK de Facebook utiliza un objeto de sesión para realizar seguimiento de su estado. Amazon Cognito utiliza el token de acceso de este objeto de sesión para autenticar al usuario y vincularlo a un grupo de identidades único de Amazon Cognito (identidades federadas).

Para proporcionar el token de acceso de Facebook a Amazon Cognito, implemente el protocolo AWSIdentityProviderManager.

Al implementar el método logins, devuelva un diccionario que contiene AWSIdentityProviderFacebook. Este diccionario sirve como la clave, y el token de acceso actual del usuario autenticado de Facebook actúa como valor, como se muestra en el ejemplo de código siguiente.

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken]; if(fbToken){ NSString *token = fbToken.tokenString; return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }]; }else{ return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login" code:-1 userInfo:@{@"error":@"No current Facebook access token"}]]; } }

Cuando cree instancias de AWSCognitoCredentialsProvider, transmita la clase que implementa AWSIdentityProviderManager como valor de identityProviderManager en el constructor. Para obtener más información, vaya a la página de AWSCognitoCredentialsProviderreferencia y elija initWithRegionTipo:identityPoolId: identityProviderManager.

iOS - Swift

Para añadir la autenticación de Facebook, empiece por seguir la guía de Facebook para integrar el SDK de Facebook en su aplicación. A continuación, añada un botón "Iniciar sesión con Facebook" a la interfaz de usuario. El SDK de Facebook utiliza un objeto de sesión para realizar seguimiento de su estado. Amazon Cognito utiliza el token de acceso de este objeto de sesión para autenticar al usuario y vincularlo a un grupo de identidades único de Amazon Cognito (identidades federadas).

Para proporcionar el token de acceso de Facebook a Amazon Cognito, implemente el protocolo AWSIdentityProviderManager.

Al implementar el método logins, devuelva un diccionario que contenga AWSIdentityProviderFacebook. Este diccionario sirve como la clave, y el token de acceso actual del usuario autenticado de Facebook actúa como valor, como se muestra en el ejemplo de código siguiente.

class FacebookProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { if let token = AccessToken.current?.authenticationToken { return AWSTask(result: [AWSIdentityProviderFacebook:token]) } return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"])) } }

Cuando cree instancias de AWSCognitoCredentialsProvider, transmita la clase que implementa AWSIdentityProviderManager como valor de identityProviderManager en el constructor. Para obtener más información, vaya a la página de AWSCognitoCredentialsProviderreferencia y elija initWithRegionTipo:identityPoolId: identityProviderManager.

JavaScript

Para proporcionar autenticación de Facebook, siga el inicio de sesión con Facebook para web para añadir el botón Iniciar sesión con Facebook a su sitio web. El SDK de Facebook utiliza un objeto de sesión para realizar seguimiento de su estado. Amazon Cognito utiliza el token de acceso de este objeto de sesión para autenticar al usuario, generar el identificador único y, si es necesario, conceder al usuario acceso a otros recursos. AWS

Una vez que haya autenticado a su usuario con el SDK de Facebook, agregue el token de sesión al proveedor de credenciales de Amazon Cognito.

FB.login(function (response) { // Check if the user logged in successfully. if (response.authResponse) { console.log('You are now logged in.'); // Add the Facebook access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } else { console.log('There was a problem logging you in.'); } });

El SDK de Facebook obtiene un token de OAuth que Amazon Cognito utiliza para generar AWS credenciales para el usuario final autenticado. Amazon Cognito también utiliza el token para buscar la existencia de un usuario que corresponda a esta identidad de Facebook en concreto en su base de datos. Si el usuario ya existe, la API devuelve el identificador existente. De lo contrario, devuelve un identificador nuevo. El SDK cliente guarda los identificadores automáticamente en caché los en el dispositivo local.

nota

Después de configurar la asignación de inicios de sesión, deberá hacer una llamada a refresh o get para obtener las credenciales. Para ver un ejemplo de código, consulte el «Caso de uso 17, Integración de grupos de usuarios con Cognito Identity», en el JavaScript archivo README.

Unity

Para añadir la autenticación de Facebook, empiece por seguir la guía de Facebook para integrar el SDK de Facebook en su aplicación. Amazon Cognito utiliza el token de acceso de Facebook del objeto FB para generar un identificador de usuario único asociado a una identidad de Amazon Cognito.

Una vez que haya autenticado a su usuario con el SDK de Facebook, agregue el token de sesión al proveedor de credenciales de Amazon Cognito:

void Start() { FB.Init(delegate() { if (FB.IsLoggedIn) { //User already logged in from a previous session AddFacebookTokenToCognito(); } else { FB.Login ("email", FacebookLoginCallback); } }); } void FacebookLoginCallback(FBResult result) { if (FB.IsLoggedIn) { AddFacebookTokenToCognito(); } else { Debug.Log("FB Login error"); } } void AddFacebookTokenToCognito() { credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString); }

Antes de usar FB.AccessToken, llame a FB.Login() y asegúrese de que FB.IsLoggedIn es verdadero.

Xamarin

Xamarin para Android:

public void InitializeFacebook() { FacebookSdk.SdkInitialize(this.ApplicationContext); callbackManager = CallbackManagerFactory.Create(); LoginManager.Instance.RegisterCallback(callbackManager, new FacebookCallback &lt; LoginResult &gt; () { HandleSuccess = loginResult = &gt; { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = &gt; { //throw error message }, HandleError = loginError = &gt; { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List &lt; string &gt; { "public_profile" }); }

Xamarin para iOS:

public void InitializeFacebook() { LoginManager login = new LoginManager(); login.LogInWithReadPermissions(readPermissions.ToArray(), delegate(LoginManagerLoginResult result, NSError error) { if (error != null) { //throw error message } else if (result.IsCancelled) { //throw error message } else { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new view controller } }); }