使用规则验证联系人电子邮件地址

本教程将指导你完成创建在玩家更改其联系人电子邮件地址时发送验证电子邮件规则的步骤。

要求

重要

这是高级 教程。 请确保满足所有要求,否则无法 完成本教程。

  • 要使用电子邮件模板发送自定义电子邮件,需要拥有自己的 SMTP 服务器以及用户名和密码。 在遵循我们的教程设置带有附加组件的 SMTP 服务器之前,请验证是否拥有自己的 SMTP 服务器。

注意

可以使用 Gmail 进行测试 - 但是使用 Gmail 时,每天限制为 2,000 封电子邮件。

  • 在调用帐户恢复逻辑之前,需要有具有用户名和密码的玩家,因此,您必须具备有关如何创建玩家的基础知识。
  • 如果不熟悉 Game Manager,请阅读 Game Manager 快速入门,因为我们将在 Game Manager 中创建电子邮件模板。
  • 您需要了解如何使用玩家档案,以便确认有必要使用电子邮件来检查联系人电子邮件是否已添加到玩家档案中。 了解如何在 获取玩家档案 教程中获取玩家的档案,并确保在 游戏 的“客户端配置文件选项”下,允许 联系电子邮件地址
  • 在本教程中需要创建一个规则,最好研读规则的工作原理。

第 1 步 - 创建电子邮件模板

我们要做的第一件事是创建帐户恢复电子邮件模板。

  • 从左侧菜单中选择 Content
  • 转到 Email Templates 选项卡。
  • 选择 NEW EMAIL TEMPLATE 按钮。

Game Manager - Content - Email Templates

添加一个 New Email Template,按如下方式填写字段,并将 Error Callback URL 留空:

  • Template name:MyFirstEmailVerificationTemplate
  • Template type:电子邮件验证
  • Email subject:验证您的电子邮件
  • Email body:(输入如下内容)
<head></head>
<body><p> You recently registered a new email with us.</p>
<p>Please click <a href="$ConfirmationUrl$">here</a> confirm your email. Thanks!</p>
  • 发件人名称: 需要在电子邮件的发件人字段中显示的名称。

  • 发件人电子邮件地址:想要在电子邮件的发件人字段中显示的电子邮件地址。 这必须是 SMTP 服务器允许发送电子邮件的发件人电子邮件域。

    注意

    Gmail 等某些电子邮件服务器将忽略此字段,并从使用 SMTP 服务器设置的帐户发送。

  • 回调 URLhttps://www.example.com

一些注意事项

  • 电子邮件正文中的 $ConfirmationUrl$ 生成一个自定义 URL,如果选择它,则跟踪用户选择该 URL 后,发出向回调 URL 的重定向。 在本例中,它注入定位标记中。
  • 回调 URL 是在玩家选择确认 URL链接后 PlayFab 将重定向到的 URL。 这可以是一个静态页面,告诉用户它们成功确认了其电子邮件。 在本例中,我们将重定向到 https://www.example.com

Game Manager - Content - Email Templates - New Email Template

填写表格后,选择“保存电子邮件模板”按钮,你将被重定向回包含电子邮件模板列表的页面。 记下将在第 4 步中使用的电子邮件模板的 ID。

Game Manager - Content - 电子邮件模板 ID

第 2 步 - 创建在更新联系人电子邮件时发送电子邮件的规则

下一步,我们将创建一个每次玩家更新其联系人电子邮件时均发送验证电子邮件的规则。 在 Game Manager 中:

  • 在左侧菜单中选择 Automation
  • 选择 Rules 选项卡。
  • 选择 NEW RULE
  • 使用 Rule VerifyUpdatedEmail 填写 Rule Name 字段。
  • Event Type 下拉列表中,选择 com.playfab.player_updated_contact_email
  • Actions 标题下,选择 +ADD ACTION

规则 - 自动化 - 新规则 - 添加操作

Type 下拉列表中选择 Send Email

  • 应在 Email template 下拉列表中填充在第 1 步中创建的模板 MyFirstEmailVerificationTemplate
  • 如果不是,则从下拉列表中选择 MyFirstEmailVerificationTemplate

Game Manager - 自动化 - 新规则 - 保存操作

第 3 步 - 向玩家添加联系人电子邮件

对于此步骤,您需要一个现有玩家帐户。

我们使用 AddOrUpdateContactEmail 向玩家添加联系人电子邮件。

注意

玩家档案中的 Contact Email 字段与玩家档案中的 Login Email 字段不同,即使它们都包含相同的电子邮件地址。 每次向玩家发送电子邮件时,都只是 转到联系人电子邮件地址。

C# 代码示例

在以下示例中,我们登录一个玩家,然后使用 AddOrUpdateContactEmail 添加一个联系人电子邮件。 确保与该玩家关联的电子邮件地址是您能够访问的电子邮件地址。

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

    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);
        AddOrUpdateContactEmail(loginRes.PlayFabId, emailAddress);
    }, FailureCallback);
}

void AddOrUpdateContactEmail(string playFabId, string emailAddress)
{
    var request = new AddOrUpdateContactEmailRequest
    {
        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());
}

第 4 步 - 确认已将此联系人电子邮件添加到该玩家的档案中

下一步,确认已将此联系人电子邮件添加到该玩家的档案中。 登录 Game Manager,然后访问 Players Profile 页面。

您可以看到为该玩家列出的 Contact Email,其 Verification Status 为:Pending

注意

如果验证电子邮件尚未发送,Verification Status 可能是 Unverified,但发送此电子邮件后,将变为 Pending 状态。

游戏管理器 - 播放器配置文件 - 联系电子邮件 - 验证待定

PlayerProfileViewConstraints 中的 ShowContactEmailAddresses 设置为 True 时,还可以调用 GetPlayerProfile,以证明该玩家现在具有我们刚刚添加的联系人电子邮件。

第 5 步 - 检查电子邮件是否已发送

最后,我们可检查是否发送了帐户恢复电子邮件。

第一步是转到 Game Manager 中玩家的 PlayStream

  • 在左侧菜单中选择 Players
  • 玩家 选项卡上,转到 PlayStream 区域。
  • 应显示 Sent Email Event

Game Manager - Players - PlayStream - Sent email event

选择事件上的 Info 图标应显示类似于如下所示的 JSON。

{
    "EventName": "sent_email",
    "EventNamespace": "com.playfab",
    "Source": "PlayFab",
    "EntityType": "player",
    "TitleId": "YourTitleId",
    "EventId": "a05625e48b1f4194bd08d1ff6a889cf8",
    "EntityId": "64647AA368D6448E",
    "SourceType": "BackEnd",
    "Timestamp": "2017-10-27T09:35:16.2946918Z",
    "History": null,
    "CustomTags": null,
    "Reserved": null,
    "emailTemplateId": "7D6438687903D4DC",
    "emailTemplateName": "MyFirstEmailVerificationTemplate",
    "emailTemplateType": "EmailVerification",
    "success": true,
    "emailName": "Primary"
}

要确认您确实收到了此电子邮件,请转到在第 3 步中创建的玩家电子邮件。 应有一个类似于如下所示的电子邮件。

验证您的电子邮件 - 电子邮件

如果检查该电子邮件中的 URL,可以看到它与此类似。

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

当玩家选择该 URL 时,会发生以下三种情况:

  1. PlayFab 生成一个新 PlayStream 事件,称为 auth_token_validated。 这样您就知道该玩家在电子邮件中选择了该 URL。
    • 您可以使用该事件触发操作,例如向玩家授予硬币或物品。
  2. 此电子邮件模板是特殊电子邮件验证模板,因此,PlayFab 会将该玩家电子邮件标记为 Verified
  3. PlayFab 返回一个重定向 URL,将该玩家发送到回调 URL 网站。
    • 在该网站上,可以显示静态 Thanks for verifying your email 消息或更详细的内容。 重定向 URL 如下所示: https://www.example.com/?token=2346241B7C277796

    • 继续选择在电子邮件中找到的 URL。

    • 将转到 example.com 网站。

    • 使用 Game Manager 查看 Player Profile

    • 可以看到 验证状态 已更改。

Game Manager - 玩家个人资料 - 联系电子邮件 - 确认验证

总结

本教程的内容就是这些。 您已经知道如何设置 SMTP 服务器,创建电子邮件模板,以及创建向验证电子邮件地址的玩家发送电子邮件的规则。

如果对本教程有任何疑问或反馈,请在 社区论坛中告诉我们