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.
Cambiar usuarios no autenticados a usuarios autenticados
Los grupos de identidades de Amazon Cognito admiten usuarios no autenticados y autenticados. Los usuarios no autenticados reciben acceso a tus AWS recursos aunque no hayan iniciado sesión con ninguno de tus proveedores de identidad (). IdPs Este grado de acceso es útil para mostrar contenido a los usuarios antes de que inicien sesión. Cada usuario sin autenticar tiene una identidad única en el grupo de identidades, aunque no hayan iniciado sesión y se hayan autenticado individualmente.
En esta sección se describe el caso en el que su usuario decide cambiar y en lugar de iniciar sesión con una identidad sin autenticar usa una identidad autenticada.
Android
Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. En algún momento, es posible que decidan iniciar sesión con uno de los compatibles. IdPs Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.
Se informará a la aplicación de una fusión de perfil a través de la interfaz IdentityChangedListener
. Implemente el método identityChanged
en la interfaz para recibir estos mensajes:
@override public void identityChanged(String oldIdentityId, String newIdentityId) { // handle the change }
iOS - Objective-C
Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Eventualmente, podrían decidir iniciar sesión con uno de los compatibles IdPs. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.
NSNotificationCenter
informa a la aplicación de que se ha producido una fusión de perfil:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(identityIdDidChange:) name:AWSCognitoIdentityIdChangedNotification object:nil]; -(void)identityDidChange:(NSNotification*)notification { NSDictionary *userInfo = notification.userInfo; NSLog(@"identity changed from %@ to %@", [userInfo objectForKey:AWSCognitoNotificationPreviousId], [userInfo objectForKey:AWSCognitoNotificationNewId]); }
iOS - Swift
Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Eventualmente, podrían decidir iniciar sesión con uno de los compatibles IdPs. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.
NSNotificationCenter
informa a la aplicación de que se ha producido una fusión de perfil:
[NSNotificationCenter.defaultCenter().addObserver(observer: self selector:"identityDidChange" name:AWSCognitoIdentityIdChangedNotification object:nil) func identityDidChange(notification: NSNotification!) { if let userInfo = notification.userInfo as? [String: AnyObject] { print("identity changed from: \(userInfo[AWSCognitoNotificationPreviousId]) to: \(userInfo[AWSCognitoNotificationNewId])") } }
JavaScript
Usuario sin autenticar inicialmente
Los usuarios suelen comenzar con el rol sin autenticar. Para este rol, usted establece la propiedad de las credenciales del objeto de configuración sin una propiedad de inicio de sesión. En este caso, la configuración predeterminada podría tener el siguiente aspecto:
// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;
Cambie a usuario autenticado
Cuando un usuario sin autenticar inicia sesión en un proveedor de identidad y tiene un token, puede cambiar el usuario de no estar autenticado a estar autenticado llamando a una función personalizada que actualiza el objeto de las credenciales y añade el token de inicio de sesión:
// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }
También puede crear un objeto de CognitoIdentityCredentials
. Si lo hace, debe restablecer las propiedades de las credenciales de cualquier objeto de servicio existente para reflejar la información de configuración de las credenciales actualizadas. Consulte la sección relativa al uso del objeto de configuración global.
Para obtener más información sobre el CognitoIdentityCredentials
objeto, consulte AWS. CognitoIdentityCredentialsen la AWS SDK for JavaScript API Referencia.
Unity
Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Eventualmente, podrían decidir iniciar sesión con uno de los compatibles IdPs. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.
Puede suscribirse a IdentityChangedEvent
para que se le notifiquen las fusiones de perfil:
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e) { // handle the change Debug.log("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };
Xamarin
Los usuarios pueden iniciar sesión en su aplicación como invitados sin autenticar. Eventualmente, podrían decidir iniciar sesión con uno de los compatibles IdPs. Amazon Cognito se asegura de que en la identidad anterior se conserve el mismo identificador único que en la nueva y de que los datos del perfil se fusionen de manera automática.
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e){ // handle the change Console.WriteLine("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId); };