> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticação de login anônimo no servidor

> Configure o login anônimo do PlayFab com criação de jogadores no lado do servidor usando a autenticação CustomID, protegendo títulos HTML5 e JavaScript contra cadastros não autorizados.

# Configurando a autenticação do PlayFab usando login anônimo

Este guia mostra como implementar a autenticação do PlayFab usando APIs de login anônimo com proteção no lado do servidor, com foco apenas na autenticação CustomID usando HTML5/JavaScript.

## Visão geral

<Info>
  A partir de 30 de junho de 2025, todos os títulos recém-criados terão a criação de jogadores por meio de APIs anônimas desabilitada.
</Info>

Para aprimorar a segurança do login anônimo, o PlayFab implementou um recurso de segurança crucial que separa os recursos de criação de jogadores entre as APIs do lado do cliente e do lado do servidor.

1. **Criação de jogadores no lado do cliente desabilitada**:
   * Para títulos recém-criados, todas as APIs de login anônimo no lado do cliente (`LoginWithCustomID`, `LoginWithAndroidDeviceID`, `LoginWithIOSDeviceID`, `LoginWithNintendoSwitchDeviceId`) não criam mais novas contas de jogador automaticamente. Os títulos criados antes de 30 de junho de 2025 podem desabilitar o login anônimo por meio da [configuração do Game Manager](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/anonymous-login#configuring-player-creation-settings).
   * Desabilitar a criação de jogadores no lado do cliente impede a criação não autorizada de contas diretamente a partir de clientes não autorizados.
   * Somente jogadores existentes podem fazer login por meio das APIs do lado do cliente.
2. **Criação de jogadores no lado do servidor habilitada**:
   * A criação de contas de jogador agora é feita por meio de APIs do lado do servidor (`LoginWithCustomID`, `LoginWithAndroidDeviceID`, `LoginWithIOSDeviceID`, `LoginWithNintendoDeviceId`).
   * Isso garante que toda a criação de contas ocorra em um ambiente seguro e controlado.

## Pré-requisitos

* Um identificador exclusivo para o jogador (CustomID)
* Um título registrado no [PlayFab](https://developer.playfab.com/)
* A chave secreta do seu título do PlayFab
* Familiaridade com as [noções básicas e práticas recomendadas de entrada](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices)
* Um servidor com um nome de domínio válido para servir arquivos HTML estáticos

<Note>
  Se precisar de ajuda para configurar um servidor, consulte o tutorial [Executando um servidor HTTP para testes](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/running-an-http-server-for-testing). Ao longo deste guia, presumiremos que seu domínio é `http://playfab.example`.
</Note>

## Fluxo de autenticação

1. **Criação de contas no lado do servidor**:
   * Use `Server/LoginWithCustomID` com a API do servidor para criar novos jogadores
   * Requer uma chave secreta do título
   * Referência: [API do servidor - Login With Custom ID](xref:titleid.playfabapi.com.server.authentication.loginwithcustomid)
2. **Login no lado do cliente**:
   * Use `Client/LoginWithCustomID` com a API do cliente para fazer o login de jogadores existentes
   * Referência: [API do cliente - Login With Custom ID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)

## Etapas de implementação

### 1. Configurar seu ambiente de desenvolvimento

1. Baixe o SDK do JavaScript na [documentação do SDK do JavaScript](/pt-BR/services/playfab/sdks/javascript/)
2. Instale os pacotes do Node.js necessários:

```bash theme={null}
npm install playfab-sdk
```

### 2. Implementação no lado do servidor (Node.js)

<Info>
  Mantenha a chave secreta do seu título em segurança e nunca a exponha no código do lado do cliente. A chave secreta só deve ser usada em ambientes de servidor seguros.
</Info>

```javascript theme={null}
const { create } = require('domain');
const http = require('http');
const PlayFab = require('playfab-sdk');
const PlayFabServer = require('playfab-sdk/Scripts/PlayFab/PlayFabServer');

// Initialize PlayFab settings
PlayFab.settings.titleId = "YOUR_TITLE_ID"; // Replace with your actual PlayFab Title ID
PlayFab.settings.developerSecretKey = "YOUR_SECRET_KEY"; // Replace with your actual secret key

// Callback function for PlayFab API responses
function onPlayFabResponse(error, result) {
    if (error) {
        console.error("PlayFab Error:", error);
        return;
    }
    console.log("PlayFab Success:", result);
}

// Function to create user with custom ID
function createUserWithCustomId(customId, callback) {
    PlayFab.PlayFabServer.LoginWithCustomID({
        CreateAccount: true,
        CustomId: customId,
    }, (error, result) => {
        if (error) {
            console.error("PlayFab Error:", error);
            callback(error);
            return;
        }
        console.log("PlayFab Success:", result);
        callback(null, result.data);
    });
}

const customId = "YOUR_CUSTOM_ID"; // Replace with your actual custom ID
const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'application/json'});
    createUserWithCustomId(customId, (error, result) => {
        if (error) {
            res.end(JSON.stringify({ error: error }));
            return;
        }
        res.end(JSON.stringify({ success: result }));
    });
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server running at http://localhost:${port}/`);
});
```

### 3. Implementação no lado do cliente (HTML)

```html theme={null}
<!DOCTYPE html>
<html>
<head>
    <script src="PlayFabSdk/src/PlayFab/PlayFabClientApi.js"></script>
</head>
<body>
    <p>Server LoginWithCustomId Auth Example</p>
    <button onclick="loginWithCustomID()">Log In with CustomId</button>
    <script>
        function loginWithCustomID() {
            var customId = "YOUR_CUSTOM_ID";
            PlayFabClientSDK.LoginWithCustomID({
                CustomId: customId,
                TitleId: YOUR_TITLE_ID,
            }, onPlayFabResponse);
        }
       

        function onPlayFabResponse(response, error) {
            if (response)
                logLine("Response: " + JSON.stringify(response));
            if (error)
                logLine("Error: " + JSON.stringify(error));
        }

        function logLine(message) {
            var textnode = document.createTextNode(message);
            document.body.appendChild(textnode);
            var br = document.createElement("br");
            document.body.appendChild(br);
        }
    </script>
</body>
</html>
```

## Definindo as configurações de criação de jogadores

### Para títulos existentes

1. Navegue até o portal do desenvolvedor do PlayFab e selecione seu título
2. Vá para **Settings**.
3. Selecione a guia **API Features**.
4. Marque a caixa para impedir que novas contas de jogador sejam criadas por meio de APIs de login anônimo

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/existing_title.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=93fa9bb45336593fc9a984f67a77b81c" alt="Desabilitando a criação de jogadores usando Client/LoginWithCustomId" width="499" height="228" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/existing_title.png" />

### Para novos títulos

<Warning>
  Habilitar a criação automática de jogadores para APIs de login anônimo pode comprometer a segurança. Habilite esse recurso apenas temporariamente durante o desenvolvimento ou os testes. Sempre o desabilite antes de passar para a produção.
</Warning>

Novos títulos têm a criação de jogadores por meio de APIs anônimas desabilitada por padrão. Para habilitá-la para testes, faça o seguinte:

1. Navegue até o portal do desenvolvedor do PlayFab e selecione seu título
2. Vá para **Settings**.
3. Selecione a guia **API Features**.
4. Desmarque a caixa para permitir que novas contas de jogador sejam criadas por meio de APIs de login anônimo

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/new_title.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=3f059a42ec2a12c62b5a1124c1c92333" alt="Habilitando a criação de jogadores usando Client/LoginWithCustomId" width="487" height="228" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/anonymous-html5/new_title.png" />

## Exemplos de testes e respostas

### Exemplo de resposta do servidor

Ao criar um usuário com êxito por meio da API do servidor, você recebe uma resposta semelhante a:

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "PlayFabId": "PLAYFAB_ID",
        "SessionTicket": "SESSION_TICKET",
        "NewlyCreated": true
    }
}
```

### Exemplo de resposta do cliente

Ao tentar criar uma nova conta a partir da API do cliente (que agora está desabilitada), você recebe um erro:

```json theme={null}
{
    "code": 400,
    "status": "BadRequest",
    "error": "PlayerCreationDisabled"
}
```

Ao fazer o login de um usuário existente com êxito por meio da API do cliente:

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "PlayFabId": "PLAYFAB_ID",
        "SessionTicket": "SESSION_TICKET",
        "NewlyCreated": false
    }
}
```

## Leitura adicional

* [Visão geral da autenticação do PlayFab](/pt-BR/services/playfab/identity/player-identity/authentication)
* [Noções básicas e práticas recomendadas de login](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices)
* [Executando um servidor HTTP para testes](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/running-an-http-server-for-testing)


## Related topics

- [Autenticação](/pt-BR/services/playfab/identity/player-identity/authentication/index.md)
- [Noções básicas e práticas recomendadas de login](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices.md)
- [Como lidar com vários logins do PlayFab](/pt-BR/services/playfab/identity/player-identity/login/multiple-logins.md)
- [Configurar a autenticação do PlayFab usando Twitch e HTML5](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/twitch-html5.md)
- [Configurar a autenticação do PlayFab usando Google e HTML5](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/google-html5.md)
