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 funcionan con Facebook para proporcionar autenticación federada a los usuarios de la aplicación. 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 antes de autenticar a los usuarios de Facebook e interactuar con Facebook. APIs

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:

nota

La federación de grupos de identidades de Amazon Cognito no es compatible con el inicio de sesión limitado de Facebook. Para obtener más información sobre cómo configurar el inicio de sesión con Facebook para iOS sin superar los permisos establecidos para el inicio de sesión limitado, consulte Inicio de sesión con Facebook para iOS: inicio rápido en Meta para desarrolladores.

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 a 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, sigue primero el flujo correspondiente que se indica a continuación para SDK integrar Facebook en tu 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. Introduce el ID de aplicación del OAuth proyecto que creaste en Meta for Developers. 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, primero sigue la guía de Facebook e SDK integra Facebook en tu aplicación. A continuación, añada un botón Iniciar sesión con Facebook a la interfaz de usuario de Android. Facebook SDK usa un objeto de sesión para rastrear 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

Tras autenticar al usuario con FacebookSDK, añada el token de sesión al proveedor de credenciales de Amazon Cognito.

Facebook SDK 4.0 o posterior:

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

Facebook SDK antes de la 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 única en su. SDK El objeto de sesión de Facebook contiene un OAuth token que Amazon Cognito utiliza para generar AWS 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, API devuelve el identificador existente. De lo contrario, API devuelve un nuevo identificador. El cliente guarda SDK automáticamente en caché los identificadores en el dispositivo local.

nota

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

iOS - Objective-C

Para añadir la autenticación de Facebook, primero sigue la guía de Facebook e SDK integra Facebook en tu aplicación. A continuación, añada un botón "Iniciar sesión con Facebook" a la interfaz de usuario. Facebook SDK usa un objeto de sesión para rastrear 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 la AWSIdentityProviderManagerprotocolo.

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, primero sigue la guía de Facebook e SDK integra Facebook en tu aplicación. A continuación, añada un botón "Iniciar sesión con Facebook" a la interfaz de usuario. Facebook SDK usa un objeto de sesión para rastrear 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).

nota

La federación de grupos de identidades de Amazon Cognito no es compatible con el inicio de sesión limitado de Facebook. Para obtener más información sobre cómo configurar el inicio de sesión con Facebook para iOS sin superar los permisos establecidos para el inicio de sesión limitado, consulte Inicio de sesión con Facebook para iOS: inicio rápido en Meta para desarrolladores.

Para proporcionar el token de acceso de Facebook a Amazon Cognito, implemente la AWSIdentityProviderManagerprotocolo.

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 AWSCognitoCredentialsProviderpágina de referencia y seleccione 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. Facebook SDK usa un objeto de sesión para rastrear 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

Tras autenticar al usuario con FacebookSDK, añada 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.'); } });

Facebook SDK obtiene un OAuth token que Amazon Cognito utiliza para AWS generar 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, API devuelve el identificador existente. De lo contrario, devuelve un identificador nuevo. El cliente guarda automáticamente los identificadores en la memoria caché del SDK 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 README archivo.

Unity

Para añadir la autenticación de Facebook, primero siga la guía de Facebook e integre Facebook SDK 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.

Tras autenticar al usuario con FacebookSDK, añada 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 } }); }