

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Alternar usuários não autenticados para usuários autenticados
<a name="switching-identities"></a>

Os grupos de identidade do Amazon Cognito são compatíveis com usuários autenticados e não autenticados. Usuários não autenticados recebem acesso aos seus AWS recursos mesmo que não estejam conectados com nenhum dos seus provedores de identidade (). IdPs Esse nível de acesso é útil para exibir conteúdo para os usuários antes que eles de façam login. Cada usuário não autenticado tem uma identidade exclusiva no grupo de identidades, embora não tenha feito login e sido autenticado individualmente.

Esta seção descreve o caso em que o usuário escolhe mudar de fazer login com uma identidade não autenticada para usar uma identidade autenticada.

## Android
<a name="switching-identities-1.android"></a>

Os usuários podem fazer login em seu aplicativo como convidados não autenticados. Eventualmente, eles podem decidir fazer login usando um dos compatíveis IdPs. O Amazon Cognito garante que uma identidade antiga mantenha o mesmo identificador exclusivo da nova e que os dados do perfil sejam mesclados automaticamente.

Seu aplicativo é informado sobre uma mesclagem de perfil por meio da interface `IdentityChangedListener`. Implemente o método `identityChanged` na interface para receber estas mensagens:

```
@override
public void identityChanged(String oldIdentityId, String newIdentityId) {
    // handle the change
}
```

## iOS - objective-C
<a name="switching-identities-1.ios-objc"></a>

Os usuários podem fazer login em seu aplicativo como convidados não autenticados. Eventualmente, eles podem decidir fazer login usando um dos compatíveis IdPs. O Amazon Cognito garante que uma identidade antiga mantenha o mesmo identificador exclusivo da nova e que os dados do perfil sejam mesclados automaticamente.

`NSNotificationCenter` informa seu aplicativo sobre uma mesclagem 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>

Os usuários podem fazer login em seu aplicativo como convidados não autenticados. Eventualmente, eles podem decidir fazer login usando um dos compatíveis IdPs. O Amazon Cognito garante que uma identidade antiga mantenha o mesmo identificador exclusivo da nova e que os dados do perfil sejam mesclados automaticamente.

`NSNotificationCenter` informa seu aplicativo sobre uma mesclagem 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>

### Usuário inicialmente não autenticado
<a name="switching-identities-1.javascript-unauth"></a>

Os usuários geralmente começam com a função não autenticada. Para essa função, você define a propriedade de credenciais de seu objeto de configuração sem uma propriedade de logins. Neste caso, sua configuração padrão pode parecer com o seguinte:

```
// set the default config object
var creds = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030'
});
AWS.config.credentials = creds;
```

### Alternar para usuário autenticado
<a name="switching-identities-1.javascript-auth"></a>

Quando um usuário autenticado se conecta a um IdP e você tem um token, você pode mudar o usuário de não autenticado para autenticado chamando uma função personalizada que atualiza o objeto de credenciais e adiciona o token de logins:

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

Você também pode criar um objeto `CognitoIdentityCredentials`. Se fizer isso, você deverá redefinir as propriedades das credenciais dos objetos de serviço existentes para refletir as informações de configuração das credenciais atualizadas. Consulte [Usar objeto de configuração global](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/global-config-object.html).

Para obter mais informações sobre o `CognitoIdentityCredentials` objeto, consulte [AWS. CognitoIdentityCredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)na Referência da AWS SDK para JavaScript API.

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

Os usuários podem fazer login em seu aplicativo como convidados não autenticados. Eventualmente, eles podem decidir fazer login usando um dos compatíveis IdPs. O Amazon Cognito garante que uma identidade antiga mantenha o mesmo identificador exclusivo da nova e que os dados do perfil sejam mesclados automaticamente.

Você pode se inscrever no `IdentityChangedEvent` para ser notificado sobre mesclagens 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>

Os usuários podem fazer login em seu aplicativo como convidados não autenticados. Eventualmente, eles podem decidir fazer login usando um dos compatíveis IdPs. O Amazon Cognito garante que uma identidade antiga mantenha o mesmo identificador exclusivo da nova e que os dados do perfil sejam mesclados automaticamente.

```
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e){
    // handle the change
    Console.WriteLine("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId);
};
```