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
nota
La federación de grupos de identidades de Amazon Cognito no es compatible con el inicio de sesión limitado de Facebook
Configuración de Facebook
-
En el portal de desarrolladores de Facebook
, inicie sesión con sus credenciales de Facebook. -
En el menú Apps (Aplicaciones), seleccione Add a New App (Añadir una nueva aplicación).
-
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
-
Elija Grupos de identidades en la consola de Amazon Cognito
. Seleccione un grupo de identidades. -
Elija la pestaña Acceso de usuario.
-
Seleccione Agregar proveedor de identidades.
-
Elija Facebook.
-
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. -
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.
-
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.
-
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.
-
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.
-
-
-
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.
-
Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.
-
Para aplicar etiquetas de entidades principales en función de las reclamaciones
sub
yaud
, elija Usar mapeos predeterminados. -
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.
-
-
Seleccione Guardar cambios.
Uso de Facebook
Android
Para añadir la autenticación de Facebook, primero sigue la guía de Facebook
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
Para proporcionar el token de acceso de Facebook a Amazon Cognito, implemente la 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 AWSCognitoCredentialsProvider
iOS - Swift
Para añadir la autenticación de Facebook, primero sigue la guía de Facebook
nota
La federación de grupos de identidades de Amazon Cognito no es compatible con el inicio de sesión limitado de Facebook
Para proporcionar el token de acceso de Facebook a Amazon Cognito, implemente la 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 AWSCognitoCredentialsProvider
JavaScript
Para proporcionar autenticación de Facebook, siga el inicio de sesión con Facebook para web
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 FacebookFB
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 < LoginResult > () { HandleSuccess = loginResult = > { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = > { //throw error message }, HandleError = loginError = > { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List < string > { "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 } }); }