영어로 읽기

다음을 통해 공유


메일 템플릿을 사용하여 계정 복구 메일 보내기

이 자습서에서는 PlayFab의 메일 템플릿을 사용하여 플레이어가 자신의 암호를 재설정할 수 있도록 계정 복구 플레이어의 연락처 메일 주소로 템플릿을 전송하는 방법을 안내합니다.

요구 사항

중요

이 자습서는 고급 자습서입니다. 모든 요구 사항을 충족했는지 확인하세요. 충족하지 않으면 이 자습서를 완료할 수 없습니다.

  • 메일 템플릿으로 사용자 지정 메일을 보내려면 사용자 이름과 암호가 있는 고유한 외부 SMTP 서버가 있어야 합니다. 자습서 추가 기능으로 SMTP 서버 설정을 사용하기 ‘전에’ 고유한 SMTP 서버가 있는지 확인하세요.

참고

Gmail을 테스트용으로 사용할 수 있지만, Gmail은 하루에 메일 2,000개로 제한됩니다.

  • 계정 복구 논리를 호출하기 전에 사용자 이름과 암호를 가진 플레이어가 있어야 하므로 플레이어를 생성하는 방법에 대한 기본적인 지식은 필수적입니다.
  • 메일 템플릿이 만들어지는 곳인 게임 관리자에 익숙하지 않은 경우 게임 관리자 빠른 시작을 읽어 보세요.
  • 연락처 메일이 플레이어의 프로필에 추가되었는지 확인하기 위해 메일이 필요함을 확인하기 위해 플레이어 프로필을 작동하는 방법에 대한 지식이 요구됩니다. 플레이어 프로필 가져오기 자습서에서 플레이어 프로필을 가져오는 방법에 대해 읽어 보고 연락처 메일 주소를 허용하는 타이틀클라이언트 프로필 옵션에서 확인하세요.

1단계 - 메일 템플릿 만들기

가장 먼저 할 일은 계정 복구 메일 템플릿을 만드는 것입니다.

  • 콘텐츠로 이동합니다.
  • 메일 템플릿 탭을 선택합니다.
  • NEW EMAIL TEMPLATE(새 메일 템플릿) 단추를 선택합니다.

게임 관리자 - 콘텐츠 - 메일 템플릿

이제 Error callback URL(오류 콜백 URL)은 비워둔 상태로 다음과 같이 필드를 채워 New Email Template(새 메일 템플릿)을 추가합니다.

  • 템플릿 이름: 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>
  • 보낸 사람 이름: 메일의 보낸 사람 필드에서 표시하려는 이름
  • 보낸 사람 메일 주소: 메일의 보낸 사람 필드에서 표시하려는 메일 주소. SMTP 서버에서 메일을 보낼 수 있도록 하는 메일 도메인이여야 합니다.

참고

Gmail과 같은 일부 메일 서버는 이 필드를 무시하고 SMTP 서버로 설정된 계정에서 전송합니다.

  • 콜백 URL: 암호 복구 양식에 대한 콜백 URL. 최소한 양식에는 플레이어가 새 암호를 입력하기 위한 암호 필드가 포함되어야 합니다.

기록해야 할 몇 가지 정보

  • 메일 본문의 $ConfirmationUrl$에서는 사용자 지정 URL을 생성합니다. 이 URL을 선택하면 사용자가 URL을 선택했음을 추적한 후 콜백 URL로 문제를 리디렉션합니다. 이 경우 앵커 태그에 삽입됩니다.
  • 콜백 URL은 플레이어가 확인 URL 링크를 선택한 후 PlayFab에서 리디렉션하는 URL입니다. 이 자습서 후반에서 ResetPassword API 호출을 만들기 위해 최소한의 암호 필드가 포함된 호스팅된 웹 형식이어야 합니다.

게임 관리자 - 콘텐츠 - 메일 템플릿 - 새 메일 템플릿

양식을 채워 넣은 후 SAVE EMAIL TEMPLATE(메일 템플릿 저장) 단추를 선택합니다. 그러면 메일 템플릿 목록이 표시된 페이지로 다시 리디렉션됩니다. 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단계 - 연락처 메일이 플레이어 프로필에 추가되었는지 확인

다음으로 연락처 메일이 플레이어의 프로필에 추가되었는지 확인합니다. 게임 관리자에 로그인하고 플레이어의 프로필 페이지를 방문합니다. 해당 플레이어의 연락처 메일이 목록에 표시되어야 합니다.

게임 관리자 - 플레이어 프로필 - 연락처 메일

또한 PlayerProfileViewConstraintsShowContactEmailAddresses를 방금 추가한 연락처 메일이 플레이어에게 있음을 나타내는 true로 설정하고 GetPlayerProfile을 호출할 수 있습니다.

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 영역으로 이동합니다.
  • Sent Email Event(보낸 메일 이벤트)가 표시됩니다.

게임 관리자 - 플레이어 - 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을 보냅니다. 이 경우 플레이어가 새 암호를 입력할 수 있는 양식이 있는 게임의 웹 사이트여야 합니다.
  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 서버를 설정하고 메일 템플릿을 만들고 계정 복구 메일을 보내고 플레이어의 암호를 재설정하는 방법을 살펴보았습니다.

이 자습서에 대한 질문이나 피드백이 있으면 커뮤니티 포럼에서 알려 주세요.