次の方法で共有


メール テンプレートを使用したアカウント回復メールの送信

このチュートリアルでは、PlayFab の電子メール テンプレート機能を使用して、プレイヤーの連絡先メール アドレスにアカウント回復を送信し、プレイヤーにパスワードをリセットさせる方法について説明します。

要件

Important

これは、高度なチュートリアルです。 すべての要件が満たされていることを確認してください。要件を満たしていない場合、このチュートリアルを完了できません。

  • メール テンプレートを使用してカスタマイズされたメールを送信するには、外部の SMTP サーバーにユーザー名とパスワードを持っている必要があります。 SMTP サーバーがあることを確認して から、次のチュートリアルを使用します 追加コンテンツのある SMTP サーバーの設定

注意

テスト用に Gmail を使用できます。しかし、Gmail を使用すると、1 日当たり 2,000 通で制限されます。

  • アカウント復旧ロジックを呼び出す前に、ユーザー名とパスワードを持つプレイヤーが必要なため、必要なプレイヤーの作成方法の基本的な知識。
  • ゲームマネージャーを始めてご利用になる場合は、メール テンプレートを作成する場所になるので、ゲーム マネージャーのクイックスタート をお読みください。
  • プレイヤー プロフィールに追加された連絡先メールを確認する必要のあるメールを確認する必要があるので、プレイヤー プロフィールの操作方法についての知識が必要です。 プレイヤー プロフィールの取得 チュートリアルでプレイヤー プロフィールを取得する方法について読み、[クライアント プロフィール オプション][タイトル][連絡先メール アドレス] を許可することをご確認ください。

手順 1 - メール テンプレートの作成

最初にすることは、アカウント回復メールのテンプレートの作成です。

  • [コンテンツ] に移動します。
  • [メール テンプレート] タブを選択します。
  • [新しいメール テンプレート] ボタンを選択します。

ゲーム マネージャー - コンテンツ - メール テンプレート

[新しいメール テンプレート] を追加し、次のようにフィールドに入力して、[エラー コールバック URL] を空のままにします。

  • テンプレート名: PasswordRecoveryTemplate
  • テンプレートの種類: アカウント回復
  • メールの件名: パスワード リセットの要求
  • メールの本文: (次のように入力します)
<head></head>
<body><p> You recently requested a password reset with us.</p>
<p>Please click <a href='$ConfirmationUrl$'>here</a> to be directed to a page to reset your password. Thanks!</p>
  • 送信元の表示名: メールの [From] フィールドに表示する名前。
  • 送信元のメール アドレス: メールの [From] フィールドに表示するメール アドレス。 メールの送信ができる SMTP サーバーのメール ドメインが必要です。

注意

Gmail などの一部メール サーバーは、このフィールドを無視し、SMTP サーバーで設定されたアカウントから送信します。

  • コールバック URL: パスワード回復フォームへのコールバック URL。 少なくとも、フォームには パスワード フィールドが必要で、プレイヤーが新しいパスワードを入力します。

注意が必要ないくつかの点を示します。

  • メール本文の $ConfirmationUrl$ が、選択された場合は、カスタマイズされた URL を生成し、ユーザーが URL を選択したことを追跡し、[コールバック URL] にリダイレクトします。 この場合、[アンカー タグ] に挿入されます。
  • [コールバック URL] は、プレイヤーが [確認 URL] リンクを選択した後に、PlayFab がリダイレクトする URL です。 このチュートリアルで ResetPassword API を呼び出すためには、少なくとも 1 つの パスワード フィールドを含むホスト型 Web フォームである必要があります。

ゲーム マネージャー - コンテンツ - メール テンプレート - 新しいメール テンプレート

フォームに入力後、[メール テンプレートの保存] ボタンを選択すると、メール テンプレート が示す一覧のあるページに戻されます。 手順 4 で使用する、[メール テンプレート] の ID をメモします。

ゲーム マネージャー - コンテンツ - メール テンプレート ID

手順 2 - ユーザー名、パスワード、ログイン メール、プレイヤーへの連絡先メールの追加

この次の手順では、既存のプレイヤー アカウントを必要になります。

AddUsernamePassword を使用して、ユーザー名、パスワード、ログイン メールを追加します。 さらに、AddOrUpdateContactEmail を使用して、プレイヤーに連絡先メールを追加します。

注意

[プレイヤー プロフィール] の [連絡先メール] フィールドは、[プレイヤー プロフィール] の [ログインメール] フィールドとは異なりますが、両方 に同じメール アドレスが書かれていてもかまいません。 プレイヤーに電子メールを送信するときはいつでも、連絡先メール アドレスに移動します。

C# コードの例

次の例では、プレイヤーにログインし、AddUsernamePassword を使用して、ユーザー名、パスワード、ログイン メールを追加します。 AddOrUpdateContactEmail を使用して、連絡先メールを追加します。 プレイヤーに関連付けられている電子メールアドレスにアクセスできることを確認します。

void CreatePlayer()
{
    var loginReq = new LoginWithCustomIDRequest
    {
        CustomId = "SomeCustomID", // replace with your own Custom ID
        CreateAccount = true // otherwise this will create an account with that ID
    };

    var username = "yourusername"; // Set this to your username
    var password = "yourpassword"; // Set this to your password
    var emailAddress = "testaddress@example.com"; // Set this to your own email

    PlayFabClientAPI.LoginWithCustomID(loginReq, loginRes =>
    {
        Debug.Log("Successfully logged in player with PlayFabId: " + loginRes.PlayFabId);
        AddUserNamePassword(username, password, emailAddress); // Add a username and password
        AddOrUpdateContactEmail(loginRes.PlayFabId, emailAddress);
    }, FailureCallback);
}

void AddUserNamePassword()
{
    var request = new AddUsernamePasswordRequest
    {
        Username = "yourusername",
        Password = "yourpassword",
        Email = "exampleemail@emaple.com" // Login email
    };
    PlayFabClientAPI.AddUsernamePassword(request, result =>
    {
        Debug.Log("The player's account now has username and password");
    }, FailureCallback);
}

void AddOrUpdateContactEmail(string playFabId, string emailAddress)
{
    var request = new AddOrUpdateContactEmailRequest
    {
        PlayFabId = playFabId,
        EmailAddress = emailAddress
    };
    PlayFabClientAPI.AddOrUpdateContactEmail(request, result =>
    {
        Debug.Log("The player's account has been updated with a contact email");
    }, FailureCallback);
}

void FailureCallback(PlayFabError error)
{
    Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
    Debug.LogError(error.GenerateErrorReport());
}

手順 3 - 連絡先メールがプレイヤーのプロフィールに追加されたことの確認

次に、連絡先メールがプレイヤーのプロフィールに追加されたことを確認します。 ゲーム マネージャー にログインし、[プレイヤーのプロフィール] ページに移動します。 そのプレイヤーに一覧表示される [連絡先メール] を確認する必要があります。

ゲーム マネージャー - プレイヤー プロフィール - 連絡先メール

また、GetPlayerProfilePlayerProfileViewConstraintsShowContactEmailAddresses を呼び出し、True として設定すると、追加したばかりの連絡先アドレスを持つプレイヤーを表示します。

手順 4 - アカウント回復テンプレート メールの送信

ここで、手順 1 のメール テンプレート ID と手順 2 で作成した [プレイヤー] を使用して、SendEmailFromTemplate を使用する確認メールを送信します。

C# コードの例

次の例では、SendCustomAccountRecoveryEmail を使用して、アカウント回復メールを送信します。

void SendCustomAccountRecoveryEmail(string emailAddress, string emailTemplateId)
{
    var request = new SendCustomAccountRecoveryEmailRequest
    {
        Email = emailAddress,
        EmailTemplateId = emailTemplateId
    };

    PlayFabServerAPI.SendCustomAccountRecoveryEmail(request, res =>
    {
        Debug.Log("An account recovery email has been sent to the player's email address.");
    }, FailureCallback);
}

void FailureCallback(PlayFabError error)
{
    Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
    Debug.LogError(error.GenerateErrorReport());
}

手順 5 - メールが送信されたことの確認

最後に、アカウント回復メールが送信されたことを確認します。

最初に実行できることは、プレイヤーの [PlayStream] エリアに移動することです。 ゲーム マネージャー 内で次の手順を実行します。

  • 左側のメニューの [プレイヤー] を選択します。
  • 画面の [PlayStream] エリアに移動します。
  • [メール イベントの送信] を表示します。

ゲーム マネージャー - プレイヤー - PlayStream - メール イベントの送信

イベントの 情報 アイコンを選択すると、次の例で示す物が JSON に似て表示されます。

{
    "EventName": "sent_email",
    "EventNamespace": "com.playfab",
    "Source": "PlayFab",
    "EntityType": "player",
    "TitleId": "YourTitleId",
    "EventId": "655f14ac45b341b59c217dcf04d26ef9",
    "EntityId": "64647AA368D6448E",
    "SourceType": "BackEnd",
    "Timestamp": "2017-10-27T23:53:58.8717009Z",
    "History": null,
    "CustomTags": null,
    "Reserved": null,
    "emailTemplateId": "DC3E1B28881C6071",
    "emailTemplateName": "PasswordRecoveryTemplate",
    "emailTemplateType": "AccountRecovery",
    "success": true,
    "emailName": "Primary"
}

実際にメールを受信したことを確認するには、手順 2 で作成したプレイヤーのメールに移動します。 メールが次に示す物に似て見える可能性があります。

パスワード リセットの要求 - メール

その電子メールの URL を調べると、それがこの例のように見えます。

https://a5f3.playfabapi.com/EmailConfirmation/Confirm/?token=2346241B7C277796&titleId=A5F3&templateId=38017AAE7F494AB3

プレイヤーがその URL を選択する場合、次の 3 つのことが発生します。

  1. PlayFab は、auth_token_validated という新しい PlayStream イベントを生成します。 これがメールの URL を選択したプレイヤーを知る方法です。 コ インまたはアイテムをプレイヤーに付与するように、動作をトリガーするイベントを使用できます。
  2. PlayFab はプレイヤーにコールバック URL を送信し、リダイレクト URL を返します。 この場合は、ゲーム用の Web サイトにプレイヤーに新しいパスワードを入力させるためのフォームがある必要があります。
  3. リダイレクト URL には、クエリ文字列内のトークンが含まれており、次のようなものが表示されます。

https://www.example.com/?token=2346241B7C277796.

手順 6 - プレイヤーのパスワードのリセット

プレイヤーがコールバック URL に送られ、フォームに新しいパスワードを入力すると、その情報とクエリ文字列のトークンを使用して、ResetPassword の呼び出しができます。

C# コードの例

次の例で、トークンに基づいて、プレイヤーのパスワードをリセットし、ResetPassword を使用して、フォームに新しいパスワードをプレイヤーが指定します。

void ResetPassword(string newPassword, string token)
{
    var request = new ResetPasswordRequest
    {
        Password = newPassword,
        Token = token
    };

    PlayFabAdminAPI.ResetPassword(request, result =>
    {
        Debug.Log("The player's password has been resetl");
    }, FailureCallback);

}

void FailureCallback(PlayFabError error)
{
    Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
    Debug.LogError(error.GenerateErrorReport());
}

手順 7 - パスワードがリセットされたことの確認

最後に、LoginWithPlayFab でログインして、プレイヤーがパスワードを正常にリセットできたことを確認します。

C# コードの例

次の C# の例では、LoginWithPlayFab とプレイヤーが手順 6 でリセットした新しいパスワードを使用してログインします。

void LoginWithPlayFab(string username, string password)
{
    var request = new LoginWithPlayFabRequest
    {
        Username = username,
        Password = password
    };

    PlayFabClientAPI.LoginWithPlayFab(request, result =>
    {
        Debug.Log("Successfully logged in player with ID " + result.PlayFabId);
    }, FailureCallback);
}

void FailureCallback(PlayFabError error)
{
    Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
    Debug.LogError(error.GenerateErrorReport());
}

結論

このチュートリアルは、これで終了です。 SMTP サーバーを設定し、メール テンプレートを作成し、アカウント回復メールを送信し、プレイヤーのパスワードをリセットする方法を確認するチュートリアルでした。

チュートリアルについてご質問やフィードバックなどがある場合は、コミュニティ フォーラム でお知らせください。