> ## 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.

# Início rápido de NodeJS

> Instale a biblioteca de cliente do PlayFab para Node.js pelo npm e faça sua primeira chamada à API do PlayFab a partir de um script Node.js para autenticar um jogador.

# Início rápido: biblioteca de cliente do PlayFab para NodeJS

Comece a usar a biblioteca de cliente do PlayFab para NodeJS para fazer sua primeira chamada à API do PlayFab e autenticar um jogador. Siga as etapas para instalar o pacote e experimentar o código de exemplo para tarefas básicas.

## Pré-requisitos

* Uma [conta de desenvolvedor do PlayFab](https://developer.playfab.com). Para obter informações sobre como criar um título e encontrar o TitleId, consulte o [Início rápido do Game Manager](/pt-BR/services/playfab/live-service-management/gamemanager/quickstart).
* [Node.js](https://nodejs.org/en/download/)
* O Node precisa estar na variável de ambiente PATH. Se você usou o instalador, provavelmente ela já foi definida para o local padrão: C:/Program Files (x86)/nodejs/

## Configuração

Os comandos a seguir funcionam no Windows, macOS e Linux.

1. Crie uma nova pasta para o seu projeto \{NodeProjLocation}:

   `GettingStarted.js`

2. Abra uma janela de comando na pasta do projeto.

3. Execute este comando:

   `npm install playfab-sdk --save`

   (Mantenha esta janela aberta; você a usará novamente mais tarde.)

Instalação do PlayFab concluída!

## Exemplos de código

### Autenticar o cliente

Este guia fornece as etapas mínimas para você fazer sua primeira chamada à API do PlayFab, sem nenhuma GUI ou feedback na tela. A confirmação é feita com o log do console. Para obter mais informações sobre parâmetros e valores de retorno, recomendamos usar primeiro o [modelo do Postman](/pt-BR/services/playfab/sdks/postman/postman-quickstart).

No seu editor de texto favorito, atualize o conteúdo de GettingStarted.js da seguinte forma:

<Note>
  Para consultar o formato correto do objeto `loginRequest` neste exemplo, consulte a referência da API de [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid).
</Note>

```javascript theme={null}
var PlayFab = require("./node_modules/playfab-sdk/Scripts/PlayFab/PlayFab");
var PlayFabClient = require("./node_modules/playfab-sdk/Scripts/PlayFab/PlayFabClient");

function DoExampleLoginWithCustomID() {
    PlayFab.settings.titleId = "144";
    var loginRequest = {
        // Currently, you need to look up the correct format for this object in the API reference for LoginWithCustomID. The Request Headers and Request Body are included as keys and values in the request object.
        TitleId: PlayFab.settings.titleId,
        CustomId: "GettingStartedGuide",
        CreateAccount: true
    };

    // For functions in the Node SDK, the first parameter will be the request object and the second parameter will be the callback function. The callback function executes after the request returns.
    PlayFabClient.LoginWithCustomID(loginRequest, LoginCallback);
}

function LoginCallback(error, result) {
    if (result !== null) {
        console.log("Congratulations, you made your first successful API call!");
    } else if (error !== null) {
        console.log("Something went wrong with your first API call.");
        console.log("Here's some debug information:");
        console.log(CompileErrorReport(error));
    }
}

// This is a utility function we haven't put into the core SDK yet. Feel free to use it.
function CompileErrorReport(error) {
    if (error == null)
        return "";
    var fullErrors = error.errorMessage;
    for (var paramName in error.errorDetails)
        for (var msgIdx in error.errorDetails[paramName])
            fullErrors += "\n" + paramName + ": " + error.errorDetails[paramName][msgIdx];
    return fullErrors;
}

// Kick off the actual login call
DoExampleLoginWithCustomID();
```

## Executar o código

1. Na janela de console que abrimos durante a instalação, execute o comando:

   `node GettingStarted.js`

   Você verá o seguinte texto como resultado:

   "Congratulations, you made your first successful API call!"

Agora você pode começar a fazer outras chamadas à API e a criar seu jogo.

Para obter uma lista de todas as chamadas disponíveis da API de cliente, consulte nossa documentação de [Referências de API do PlayFab](/pt-BR/services/playfab/api-references).

## Desconstruir o código

Esta seção explica em detalhes cada parte do código do início rápido de Node.

No SDK de Node, as funções em `PlayFabClientSDK` recebem o nome da requisição HTTP. Por exemplo, a requisição HTTP correspondente à função `LoginWithCustomID` também se chama "LoginWithCustomID". Os Request Headers e o Request Body são empacotados no objeto de requisição JavaScript como chaves e valores.

* Análise linha por linha de `GettingStarted.js`
  * `PlayFab.settings.titleId = "xxxx";`
    * Todo desenvolvedor do PlayFab cria um título no Game Manager. Ao publicar seu jogo, você precisa codificar esse TitleId no jogo. Isso permite que o cliente saiba como acessar os dados corretos no PlayFab. Para a maioria dos usuários, basta considerar isso uma etapa obrigatória para que o PlayFab funcione.

  * `var loginRequest = { TitleId: PlayFab.settings.titleId, CustomId: "GettingStartedGuide", CreateAccount: true };`
    * A maioria dos métodos da API do PlayFab exige parâmetros de entrada, e esses parâmetros são empacotados em um objeto de requisição.
    * Cada método da API exige um objeto de requisição exclusivo, com uma combinação de parâmetros opcionais e obrigatórios.
      * Para `LoginWithCustomIDRequest`, há um parâmetro obrigatório `CustomId`, que identifica um jogador de forma exclusiva, e `CreateAccount`, que permite a criação de uma nova conta com essa chamada. `TitleId` é outro parâmetro obrigatório em JavaScript e precisa corresponder a `PlayFab.settings.titleId`.
      * Para obter informações sobre onde encontrar o `TitleId`, consulte o [Início rápido do Game Manager](/pt-BR/services/playfab/live-service-management/gamemanager/quickstart).
* Neste caso, `TitleId`,  `customId` e `CreateAccount` vêm do Request Body de `LoginWithCustomID`.
  * `PlayFabClientSDK.LoginWithCustomID(loginRequest, LoginCallback);`
    * Isso inicia a requisição assíncrona para `LoginWithCustomID`, que chamará LoginCallback quando a chamada à API for concluída.

  * Para o logon, a maioria dos desenvolvedores vai querer usar um método de logon mais adequado.
    * Consulte a [documentação de logon do PlayFab](xref:titleid.playfabapi.com.client.authentication) para obter uma lista de todos os métodos de logon e parâmetros de entrada. As opções comuns são:
      * [LoginWithAndroidDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)
      * [LoginWithIOSDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)
      * [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress)
* `LoginCallback` contém dois parâmetros: `error` e `result`.
  * Em caso de sucesso, `error` será `null` e o objeto `result` conterá as informações solicitadas, de acordo com a API chamada.
    * Este `result` contém algumas informações básicas sobre o jogador, mas, para a maioria dos usuários, o logon é simplesmente uma etapa obrigatória antes de chamar outras APIs.
* Se error não for `null`, sua API falhou.

## Solução de problemas

* As chamadas à API podem falhar por vários motivos, e você deve sempre tentar tratar a falha.
* O objeto de erro inclui o nome, o código e a mensagem do erro. Juntas, essas informações devem ser suficientes para diagnosticar o erro.
* Por que as chamadas à API falham (em ordem de probabilidade):
  * `PlayFabSettings.TitleId` não está definido. Se você se esquecer de definir `TitleId` para o seu título, nada funcionará.
  * Parâmetros da requisição. Se você não tiver fornecido as informações corretas ou obrigatórias para uma determinada chamada à API, ela falhará. Consulte `error.errorMessage`, `error.errorDetails` ou `error.GenerateErrorReport()` para obter mais informações.
  * Problema de conectividade do dispositivo. Celulares perdem e recuperam a conectividade constantemente, portanto qualquer chamada à API pode falhar aleatoriamente a qualquer momento e funcionar logo em seguida. Entrar em um túnel pode desconectar você completamente.
  * Problema no servidor do PlayFab. Como em qualquer software, podem ocorrer problemas. Consulte nossas [notas de versão](/pt-BR/services/playfab/release-notes) para obter atualizações.
* A internet não é 100% confiável. Às vezes, a mensagem é corrompida ou não chega ao servidor do PlayFab.
  * Os códigos de erro globais dos métodos da API podem ser encontrados em [Códigos de erro globais dos métodos da API](/pt-BR/services/playfab/api-references/global-api-method-error-codes).
  * Se você estiver com dificuldades para depurar um problema e as informações do erro não forem suficientes, visite nossos [fóruns](https://community.playfab.com/index.html).

## Próximas etapas

Este início rápido mostra um procedimento simplificado para autenticar um usuário. Para obter informações adicionais sobre autenticação de usuários, consulte [Noções básicas e práticas recomendadas de logon](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices).

Boa programação!


## Related topics

- [Linguagens compatíveis com o PlayFab](/pt-BR/services/playfab/sdks/languages/index.md)
- [SDK de NodeJS](/pt-BR/services/playfab/sdks/nodejs/index.md)
- [Início rápido de matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart.md)
- [Início rápido de estatísticas](/pt-BR/services/playfab/player-progression/statistics/quickstart-statistics.md)
- [Início rápido de trocas](/pt-BR/services/playfab/economy-monetization/economy/trading/trading-quickstart.md)
