JackMasaki’s blog

掲載した記事ネタや作ったアプリ、参加したイベントレポートなどを掲載します

PlayFabでEmailとPasswordを使ってログインする

今回はUnityでのEmailとPasswordを使ったPlayFabへのログイン方法について書きます。

PlayFabの導入部分はこちら

jackmasaki.hatenablog.com


PlayFabのログインについて

PlayFabには様々なログイン方法があります。

ログインの種類
LoginWithAndroidDeviceID AndroidバイスのIDを仕様してログイン
LoginWithCustomID Titleごとに生成した文字列を使用してログイン
LoginWithEmailAddress Emailアドレスとパスワードを使用してログイン
LoginWithFacebook Facebookのアクセストークンを使用してログイン
LoginWithFacebookInstantGamesId FacebookインスタントゲームIDでログイン
LoginWithGameCenter iOS Game CenterのIDを使用してログイン
LoginWithGoogleAccount Googleアカウントを使用してログイン
LoginWithIOSDeviceID iOSのデバイスIDを使用してログイン
LoginWithKongregate Kongregateアカウントを使用してログイン
LoginWithNintendoSwitchDeviceId Nintendo SwitchのデバイスIDを使用してログイン
LoginWithPlayFab PlayFabのアカウントでログイン
LoginWithSteam Steamのアカウントでログイン
LoginWithTwitch Twitchのアクセストークンを使用してログイン
LoginWithWindowsHello WindowsHelloを介して署名しログイン
LoginWithXbox Xbox Liveトークンを使用してログイン

導入方法で利用したログイン方法はLoginWithCustomIDです。

var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide", CreateAccount = true};
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);

導入方法で紹介したコードでは"GettingStartedGuide"という文字列をCustomIdとして指定しログインしていたというわけです。

試しにCustomIdを任意の文字列に変更し、CreateAccountをtrueにして実行すると新しくPlayerが作成されることが確認できるはずです。

Playersの該当Player内、Overviewの中にあるIdentitiesを見ると、正しくCustomIdが任意の文字列でLinkされていることがわかります。

f:id:JackMasaki:20180914160343p:plain


UnityでPlayFabにEmailとPasswordでログインする

Emailでログインする際にはまずPlayFab用のアカウントを作成させる必要があります。 理由としては、LoginWithEmailAddress()だとCreateAccountが反映されずアカウントが作成されないためです。

PlayFabClientAPI.RegisterPlayFabUser()を使用しアカウントを作成、登録します。

using PlayFab;
public void PressRegisterButton()
{
    var RegisterData = new RegisterPlayFabUserRequest()
    {
        TitleId = "****",
        Email = "*******@****",
        Password = "********",
        Username = "******"
    };

    PlayFabClientAPI.RegisterPlayFabUser(RegisterData, result => 
    {
        Debug.Log("Congratulations, you made your PlayFab account!");
    }, error => Debug.Log(error.GenerateErrorReport()));
}

TitleIdにはTitleIdを、Email,Password,Usernameには任意のString型を設定します。

RegisterPlayFabUserRequestには次の項目を設定することができます。

RegisterPlayFabUserRequest
DisplayName 対象TitleでのPlayerの表示名(3~25文字)
Email 登録する際のEmailアドレス
EncryptedRequest Titleの公開RSAキーで暗号かされたBase64エンコードされたBody
InfoRequestParameters ユーザーに返す情報のフラグ
Password PlayFabのパスワード(6~100文字)
PlayerSecret APIリクエスシグネチャの検証用
RequireBothUsernameAndEmail usernameパラメータとemailパラメータの両方を必要とするかどうかのフラグ
TitleId* 該当するTitleID
Username PlayFabのアカウントユーザー名(3~20文)

レスポンスでは次のものが返ってきます。

RegisterPlayFabUserResult
EntityToken ログインフラグがtrueの場合、ログインして返ります
PlayFabId 新規作成されたアカウントのPlayFabのID
SessionTicket 現在のセッションでのPlayerトーク
SettingForUser ユーザー固有の設定
Username PlayFabでのユーザー名

これで、アカウントの作成ができました。

次にEmailとPasswordでログインする方法を紹介します。

using PlayFab;

public void PressLoginButton()
{
    var LoginData = new LoginWithEmailAddressRequest()
    {
        TitleId = "****",
        Email = "********@********",
        Password = "******",
    };
    PlayFabClientAPI.LoginWithEmailAddress(LoginData, result => 
    {
        Debug.Log("Congratulations, you made your first successful API call!");
    }, error => Debug.Log(error.GenerateErrorReport()));
}

RegisterしたTitleId,Email,Passwordを入れてリクエストすることでログインすることができます。