

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.

# Transición de usuarios sin autenticar a usuarios autenticados
<a name="switching-identities"></a>

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
<a name="switching-identities-1.android"></a>

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
<a name="switching-identities-1.ios-objc"></a>

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
<a name="switching-identities-1.ios-swift"></a>

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
<a name="switching-identities-1.javascript"></a>

### Usuario sin autenticar inicialmente
<a name="switching-identities-1.javascript-unauth"></a>

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
<a name="switching-identities-1.javascript-auth"></a>

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](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/global-config-object.html).

Para obtener más información sobre el `CognitoIdentityCredentials` objeto, consulte [AWS. CognitoIdentityCredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)en la referencia AWS SDK para JavaScript de la API.

## Unity
<a name="switching-identities-1.unity"></a>

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.

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
<a name="switching-identities-1.xamarin"></a>

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);
};
```