> ## 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 のもう 1 つの必須パラメーターで、`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` の 2 つのパラメーターが含まれます。
  * 成功した場合、`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 メソッド エラー コードは、[グローバル API メソッド エラー コード](/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) を参照してください。

Happy coding!


## Related topics

- [PlayFab がサポートする言語](/ja-jp/services/playfab/sdks/languages/index.md)
- [クイックスタート](/ja-jp/services/playfab/economy-monetization/economy-v2/quickstart.md)
- [クイックスタート iOS](/ja-jp/services/playfab/sdks/c/quickstart-ios.md)
- [クイックスタート Linux](/ja-jp/services/playfab/sdks/c/quickstart-linux.md)
- [クイックスタート Win32](/ja-jp/services/playfab/sdks/c/quickstart-win32.md)
