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

# NodeJS 빠른 시작

> npm에서 PlayFab Node.js 클라이언트 라이브러리를 설치하고 Node.js 스크립트에서 첫 번째 PlayFab API 호출을 수행하여 플레이어를 인증합니다.

# 빠른 시작: NodeJS용 PlayFab 클라이언트 라이브러리

NodeJS용 PlayFab 클라이언트 라이브러리를 시작하여 첫 번째 PlayFab API 호출을 수행하고 플레이어를 인증하세요. 다음 단계를 따라 패키지를 설치하고 기본 작업을 위한 예제 코드를 시험해 보세요.

## 필수 구성 요소

* [PlayFab 개발자 계정](https://developer.playfab.com). 타이틀 만들기 및 TitleId 찾기에 대한 정보는 [Game Manager 빠른 시작](/services/playfab/live-service-management/gamemanager/quickstart)을 참조하세요.
* [Node.js](https://nodejs.org/en/download/)
* Node가 PATH 환경 변수에 있어야 합니다. 설치 프로그램을 사용한 경우 기본 위치(C:/Program Files (x86)/nodejs/)로 자동 설정되어 있을 것입니다.

## 설정

다음 명령은 Windows, macOS, Linux에서 작동합니다.

1. 프로젝트를 위한 새 폴더 \{NodeProjLocation}을 만듭니다:

   `GettingStarted.js`

2. 프로젝트 폴더에서 명령 창을 엽니다.

3. 다음 명령을 실행합니다:

   `npm install playfab-sdk --save`

   (이 창을 열어 두세요. 나중에 다시 사용합니다.)

PlayFab 설치가 완료되었습니다!

## 코드 예제

### 클라이언트 인증

이 가이드는 GUI나 화면 피드백 없이 첫 번째 PlayFab API 호출을 수행하는 데 필요한 최소한의 단계를 제공합니다. 확인은 콘솔 로그에서 이루어집니다. 매개 변수와 반환 값에 대한 자세한 내용은 먼저 [Postman 템플릿](/services/playfab/sdks/postman/postman-quickstart)을 사용하는 것을 권장합니다.

원하는 텍스트 편집기에서 GettingStarted.js의 내용을 다음과 같이 업데이트하세요:

<Note>
  이 예제에서 `loginRequest` 객체의 올바른 형식을 확인하려면 [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)의 API 참조를 확인하세요.
</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();
```

## 코드 실행

1. 설치 중에 열어둔 콘솔 창에서 다음 명령을 실행합니다:

   `node GettingStarted.js`

   결과로 다음 텍스트가 표시되어야 합니다:

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

이제 다른 API 호출을 시작하고 게임을 빌드할 수 있습니다.

사용 가능한 모든 클라이언트 API 호출 목록은 [PlayFab API 참조](/services/playfab/api-references) 문서를 확인하세요.

## 코드 분석

이 섹션에서는 Node 빠른 시작 코드의 각 부분을 자세히 설명합니다.

Node SDK의 경우 `PlayFabClientSDK`의 함수는 HTTP 요청의 이름을 따라 명명됩니다. 예를 들어 `LoginWithCustomID` 함수에 해당하는 HTTP 요청도 "LoginWithCustomID"라고 합니다. 요청 헤더와 요청 본문은 키와 값으로 JavaScript 요청 객체에 패킹됩니다.

* `GettingStarted.js`의 한 줄씩 분석
  * `PlayFab.settings.titleId = "xxxx";`
    * 모든 PlayFab 개발자는 Game Manager에서 타이틀을 만듭니다. 게임을 게시할 때 해당 TitleId를 게임에 코딩해야 합니다. 이를 통해 클라이언트가 PlayFab 내의 올바른 데이터에 액세스하는 방법을 알 수 있습니다. 대부분의 사용자에게 이는 PlayFab이 작동하도록 하는 필수 단계로 간주하면 됩니다.

  * `var loginRequest = { TitleId: PlayFab.settings.titleId, CustomId: "GettingStartedGuide", CreateAccount: true };`
    * 대부분의 PlayFab API 메서드는 입력 매개 변수를 필요로 하며, 이러한 입력 매개 변수는 요청 객체에 패킹됩니다.
    * 모든 API 메서드는 선택 및 필수 매개 변수의 조합이 포함된 고유한 요청 객체가 필요합니다.
      * `LoginWithCustomIDRequest`에는 플레이어를 고유하게 식별하는 필수 매개 변수인 `CustomId`와 이 호출로 새 계정을 만들 수 있게 해주는 `CreateAccount`가 있습니다. `TitleId`는 JavaScript의 또 다른 필수 매개 변수이며 `PlayFab.settings.titleId`와 일치해야 합니다.
      * `TitleId`를 찾을 위치에 대한 정보는 [Game Manager 빠른 시작](/services/playfab/live-service-management/gamemanager/quickstart)을 참조하세요.
* 이 경우 `TitleId`, `customId`, `CreateAccount`는 `LoginWithCustomID`의 요청 본문에서 가져옵니다.
  * `PlayFabClientSDK.LoginWithCustomID(loginRequest, LoginCallback);`
    * `LoginWithCustomID`에 대한 비동기 요청을 시작하고, API 호출이 완료되면 LoginCallback을 호출합니다.

  * 로그인의 경우 대부분의 개발자는 보다 적합한 로그인 방법을 사용하고 싶어할 것입니다.
    * 모든 로그인 방법과 입력 매개 변수 목록은 [PlayFab 로그인 설명서](xref:titleid.playfabapi.com.client.authentication)를 확인하세요. 일반적인 선택지는 다음과 같습니다:
      * [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`에는 `error`와 `result`라는 두 개의 매개 변수가 포함되어 있습니다.
  * 성공하면 `error`는 `null`이 되고 `result` 객체는 호출된 API에 따라 요청된 정보를 포함합니다.
    * 이 `result`에는 플레이어에 대한 기본 정보가 포함되어 있지만, 대부분의 사용자에게 로그인은 다른 API를 호출하기 전의 필수 단계에 불과합니다.
* error가 `null`이 아니면 API가 실패한 것입니다.

## 문제 해결

* API 호출은 여러 가지 이유로 실패할 수 있으며 항상 실패 처리를 시도해야 합니다.
* error 객체에는 오류 이름, 오류 코드, 오류 메시지가 포함됩니다. 이 정보로 오류를 진단하는 데 충분해야 합니다.
* API 호출이 실패하는 이유(가능성이 높은 순):
  * `PlayFabSettings.TitleId`가 설정되지 않음. 타이틀에 대해 `TitleId`를 설정하는 것을 잊으면 아무것도 작동하지 않습니다.
  * 요청 매개 변수. 특정 API 호출에 대해 올바르거나 필수적인 정보를 제공하지 않으면 실패합니다. 자세한 내용은 `error.errorMessage`, `error.errorDetails` 또는 `error.GenerateErrorReport()`를 참조하세요.
  * 장치 연결 문제. 휴대전화는 지속적으로 연결이 끊어졌다가 다시 연결되므로 언제든지 API 호출이 무작위로 실패한 후 바로 다시 작동할 수 있습니다. 터널에 들어가면 완전히 연결이 끊길 수 있습니다.
  * PlayFab 서버 문제. 모든 소프트웨어와 마찬가지로 문제가 발생할 수 있습니다. 업데이트는 [릴리스 노트](/services/playfab/release-notes)를 확인하세요.
* 인터넷이 100% 신뢰할 수 있는 것은 아닙니다. 때로는 메시지가 손상되거나 PlayFab 서버에 도달하지 못할 수 있습니다.
  * 전역 API 메서드 오류 코드는 [Global API Method Error Codes](/services/playfab/api-references/global-api-method-error-codes)에서 확인할 수 있습니다.
  * 문제를 디버깅하는 데 어려움이 있고 오류 정보 내의 정보가 충분하지 않은 경우 [포럼](https://community.playfab.com/index.html)을 방문하세요.

## 다음 단계

이 빠른 시작 가이드는 사용자를 인증하는 단순화된 절차를 보여줍니다. 사용자 인증에 대한 자세한 내용은 [로그인 기본 사항 및 모범 사례](/services/playfab/identity/player-identity/login/login-basics-best-practices)를 참조하세요.

즐겁게 코딩하세요!


## Related topics

- [PlayFab 지원 언어](/ko/services/playfab/sdks/languages/index.md)
- [NodeJS SDK](/ko/services/playfab/sdks/nodejs/index.md)
- [빠른 시작](/ko/services/playfab/economy-monetization/economy-v2/quickstart.md)
- [Node.js Nodeunit 라이선스](/ko/services/playfab/sdks/nodejs/nodeunit-license.md)
- [빠른 시작 Android](/ko/services/playfab/sdks/c/quickstart-android.md)
