メール テンプレートを使用したアカウント回復メールの送信
このチュートリアルでは、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 をメモします。
手順 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 - 連絡先メールがプレイヤーのプロフィールに追加されたことの確認
次に、連絡先メールがプレイヤーのプロフィールに追加されたことを確認します。 ゲーム マネージャー にログインし、[プレイヤーのプロフィール] ページに移動します。 そのプレイヤーに一覧表示される [連絡先メール] を確認する必要があります。
また、GetPlayerProfile と PlayerProfileViewConstraints の ShowContactEmailAddresses を呼び出し、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] エリアに移動します。
- [メール イベントの送信] を表示します。
イベントの 情報 アイコンを選択すると、次の例で示す物が 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 つのことが発生します。
- PlayFab は、auth_token_validated という新しい PlayStream イベントを生成します。 これがメールの URL を選択したプレイヤーを知る方法です。 コ インまたはアイテムをプレイヤーに付与するように、動作をトリガーするイベントを使用できます。
- PlayFab はプレイヤーにコールバック URL を送信し、リダイレクト URL を返します。 この場合は、ゲーム用の Web サイトにプレイヤーに新しいパスワードを入力させるためのフォームがある必要があります。
- リダイレクト 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 サーバーを設定し、メール テンプレートを作成し、アカウント回復メールを送信し、プレイヤーのパスワードをリセットする方法を確認するチュートリアルでした。
チュートリアルについてご質問やフィードバックなどがある場合は、コミュニティ フォーラム でお知らせください。