Manage user accounts
概要
ユーザーアカウントを使用して、ユーザーはプラットフォームにアクセスできます。これには、プレイヤーだけでなく、組織内の管理者ポータルにアクセスできるすべてのユーザーも含まれます。
ユーザーには管理者とプレイヤーの 2 種類があります。管理者ユーザーとは、管理者ポータルへのアクセスを許可されているユーザーです。一方、プレイヤーができるのはゲームに直接アクセスすることだけです。管理者ポータルで管理者はプレイヤーアカウントを管理できます。
管理者としてログイン
管理者ポータルでアカウントを作成すると、自動的にゲーム管理者ロールが付与されます。このロールには、ゲームやプレイヤーに関連するすべてのことを管理できるように、サービス内に存在する特定のリソースへのアクセスを許可する権限が含まれています。ゲーム管理者ロールは変更できませんが、ユーザーアカウントの[Roles (ロール)]タブでロールに関する情報を表示できます。
管理者ポータルでアカウントを管理する
ユーザーの検索
1.管理者ポータルのゲームスタジオの名前空間で、[Users Management (ユーザー管理)]セクションを展開し、[Users (ユーザー)]をクリックします。
2.手元にあるユーザーのアカウント情報に対応する[Search User (ユーザーを検索)]パネルのドロップダウンメニューから検索フィルターを選択します。
テキストボックスにユーザーの認証情報を入力し、Enterを押して検索します。検索結果が表示されます。
サードパーティのプラットフォーム認証情報を使用してプレイヤーを検索する場合、2 つの新しいドロップダウンメニューが表示されます。最初のドロップダウンメニューで、[Steam]や[Epic Games]など、プレイヤーが帰属するサードパーティ製プラットフォームを選択します。2 つ目のドロップダウンメニューで、利用可能な認証情報に応じて[Platform Display Name (プラットフォーム表示名)]または[Platform User ID (プラットフォームユーザー ID)]のいずれかを選択します。
管理者ユーザーの招待
ゲームの管理者ユーザーは、ゲーム内の同僚やコミュニティマネージャーを管理者ポータルにすぐに招待できます。下記の手順に従って、ユーザーを招待するためにメールアドレスを入力します。招待されたユーザーには、招待主と同じゲーム管理者ロールとゲームスタジオの名前空間が割り当てられます。
1.管理者ポータルで、[Users Management (ユーザー管理)]セクションを展開し、[Users (ユーザー)]を選択して、[Invite Admin (管理者を招待)]ボタンをクリックします。
2.[Invite Admin (管理者を招待)]ダイアログボックスが表示されます。招待したい人のメールアドレスを入力します。一度に複数の人を招待するには、EnterまたはTabを押すか、カンマを打ってメールアドレスを区切ります。
3.招待リンクを送信するには、[Invite (招待)]をクリックしてください。
4.招待されたユーザーは招待リンクを受け取ります。招待メールで、[Complete My Account (アカウント登録を完了)]をクリックして登録を完了してください。
招待リンクは1週間後に期限切れになります。招待されたユーザーがその期間内に登録を完了しなかった場合は、新しい招待を送信する必要があります。
ゲームスタジオにまだゲームタイトルがない場合、管理者ポータルの読み込みの前に、最初のユーザーはログインするとすぐにゲームタイトルを作成するよう求められます。
ユーザーのメールアドレスを変更する
以下の手順に従って、ユーザーのメールアドレスを変更できます(自身のメールアドレスを含む)。
1.管理者ポータルで[Users (ユーザー)]メニューを開き、検索バーに検索したいユーザーのメールアドレスまたは表示名を入力し、Enter を押して検索します。
ユーザー検索では、あいまい検索が可能です。つまり、名前やメールアドレスの全体ではなく、プレイヤーの認証情報における最初の数文字を入力するだけで、探しているプレイヤーを見つけることができます。
2.検索結果が表示されます。探しているアカウントを見つけたら、アカウントリストの[Action (アクション)]列の[View (表示)]をクリックして開きます。
3.[User Overview (ユーザーの概要)]ウィンドウが表示され、ユーザーのアカウントデータを素早く確認できます。ユーザーのメールアドレスの下にある[Change (変更)]をクリックします。
4.ユーザーのメールアドレスを変更するには、まず本人確認を行う必要があります。表示される[Change User’s Email (ユーザーのメールアドレスを変更)]確認ボックスで、[Send Verification Code (認証コードを送信)]ボタンをクリックして、管理者ポータルのログインに使用したメールアドレスに認証コードを送信します。
5.[Change User’s Email (ユーザーのメールアドレスを変更)]確認ボックスが変化し、2 つのフィールドが表示されます。メールアドレスに届いた認証コードを[Verify your identity (本人確認)]フィールドに入力し、[Set new email address for the user (ユーザーの新しいメールアドレスを設定)]フィールドにユーザーの新しいメールアドレスを入力します。完了したら、[Confirm (確認)]をクリックします。
6.[User Overview (ユーザーの概要)]ページにリダイレクトされます。ユーザーは、古いメールアドレスで認証メッセージを受け取ります。ユーザーが更新を確認すると、メールアドレスが自動的に変更されます。
ユーザーのイベントログの表示
ユーザーイベントログには、ポータルにログインしたり、個人データをダウンロードしたりなど、ユーザーが行ったあらゆる変更やアクションの履歴が表示されます。
1.管理者ポータルで[Users (ユーザー)]メニューを開き、検索バーに検索したいユーザーのメールアドレスまたは表示名を入力し、Enter を押して検索します。
ユーザー検索では、あいまい検索が可能です。つまり、名前やメールアドレスの全体ではなく、プレイヤーの認証情報における最初の数文字を入力するだけで、探しているプレイヤーを見つけることができます。
2.検索結果が表示されます。一覧からアカウントを見つけたら、アカウントリストの[Action (アクション)]列の[View (表示)]をクリックします。
3.[User Overview (ユーザーの概要)]ウィンドウが表示され、ユーザーのアカウントデータの概要を確認できます。[Logs (ログ)]タブを選択します。
4.[Logs (ログ)]タブには、ユーザーログのリスト、ユーザーログが属する名前空間、各ログが作成された時刻が表示されます。ログを作成時刻または名前空間で並べ替えて、特定のログを見つけやすくできます。
5.ログを開くには、そのログの[Action (アクション)]列で[View (表示)]をクリックします。
6.[Event Log Details (イベントログの詳細)]ウィンドウが表示されます。ここで、ログの内容を確認できます。
ユーザーの編集履歴の表示
アカウント履歴機能を使用すると、ユーザーがアカウントデータに加えた変更を確認できます。利用可能な情報には、ユーザーの[Display Name (表示名)]、[Email Address (メールアドレス)]、[Password (パスワード)]、[Date of Birth (生年月日)]に対して行われた変更などがあります。
1.管理者ポータルで[Users (ユーザー)]メニューを開き、検索バーに検索したいユーザーのメールアドレスまたは表示名を入力し、Enter を押して検索します。
ユーザー検索では、あいまい検索が可能です。つまり、名前やメールアドレスの全体ではなく、プレイヤーの認証情報における最初の数文字を入力するだけで、探しているプレイヤーを見つけることができます。
2.検索結果が表示されます。一覧からアカウントを見つけたら、アカウントリストの[Action (アクション)]列の[View (表示)]をクリックします。
3.[User Overview (ユーザーの概要)]ウィンドウが表示され、ユーザーのアカウントデータの概要を確認できます。右側の[View account history (アカウント履歴を表示)]をクリックします。
4.履歴を取得する期間の[Start (開始日)]と[End Date (終了日)]を入力します。以下の例では、2020-07-27 と 2020-08-04 を入力して、その期間内にユーザーが[Display Name (表示名)]に加えた変更を確認しています。[Email Address (メールアドレス)]、[Password (パスワード)]、[Date of Birth (生年月日)]といった他のフィールドの編集履歴も表示できます。
SDK を使用したアカウントの実装
ゲーム内プレイヤー登録
この関数を使用すると、プレイヤーはゲーム内でアカウントに登録できます。
- Unreal Engine
- Unity
const FString OriginalEmail = TEXT("originalEmail@example.com");
const FString Username = TEXT("JohnDoe");
const FString Password = TEXT("password");
const FString DisplayName = TEXT("testName");
const FString Country = TEXT("US");
const FString DateOfBirth = TEXT("2000-12-20");
bool bUserAccountCreated = false;
FRegistry::User.Registerv2(OriginalEmail, Username, Password, DisplayName, Country, DateOfBirth,
THandler<FUserData>::CreateLambda([&bUserAccountCreated](const FUserData& Result)
{
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
bUserAccountCreated = true;
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
private static void OnRegister(Result<UserData> result)
{
if (result.IsError)
{
Debug.Log("Register failed:", result.Error.Message);
}
else
{
Debug.Log("Register successful.");
}
}
public static void Main(string[] args)
{
var user = AccelBytePlugin.GetUser();
string email = "useremail@example.com";
string username = "JohnDoe";
string password = "password";
string displayName = "displayed";
string country = "US";
string dateOfBirth = "1995-12-30";
user.Registerv2(email, username, password, displayName, OnRegister, country, dateOfBirth);
}
入力したフィールドが次のルールに従っていることを確認してください。
[Username (ユーザー名)]:
- 3 文字以上 48 文字以下。
- 英数字、アンダースコア、ダッシュのみ使用できます。
- スペースは使用できません。
- 最初と最後が英数字である必要があります。
[Password (パスワード)]:
- 8 文字以上 32 文字以下。
- 大文字、小文字、数字、特殊文字の 4 種類の文字から少なくとも 3 種類を含んでいる必要があります。
- 同じ文字を連続して使用できるのは 2 文字までです。
[Display name (表示名)]:
- 8 文字以上 32 文字以下。
- 大文字、小文字、スペース、特殊文字のみ使用できます。
- 最初と最後が英数字である必要があります。
[Email address (メールアドレス)]:
- 3 文字以上 256 文字以下。
- 英数字、'@'、'.'、'_'、'-'、'+'、'&'、'*'のみ使用できます。
- 最初と最後が英数字である必要があります。
プレイヤーが登録を検証する
この関数により、プレイヤーはアカウント登録を検証できます。これは、アカウントにログインする前に行う必要があります。
- Unreal Engine
- Unity
const FString VerificationCode = TEXT("verification-code-from-email");
FRegistry::User.Verify(VerificationCode, FVoidHandler::CreateLambda([&bVerifyUserSuccessful]()
{
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
//Let's assume that user has inputted verification code somehow after receiving email with verification code
private static void OnVerifyClicked(object sender, string verificationCode)
{
var user = AccelBytePlugin.GetUser();
user.Verify(verificationCode, OnVerify);
}
private static void OnVerify(Result result)
{
if (result.IsError)
{
Debug.Log("Verify failed:", result.Error.Message);
}
else
{
Debug.Log("Verify successful. User verified");
}
}
プレイヤーがヘッドレスアカウントをアップグレードする
この関数は、ヘッドレスアカウントをメールアドレスとパスワードにリンクすることでヘッドレスアカウントをアップグレードします。
- Unreal Engine
- Unity
const FString OriginalEmail = TEXT("originalEmail@example.com");
const FString Password = TEXT("Password1");
FAccountUserData userData;
FRegistry::User.Upgrade(OriginalEmail, Password,
THandler<FAccountUserData>::CreateLambda([&](const FAccountUserData& Result)
{
userData = Result;
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
}),
FErrorHandler::CreateLambda([&](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage);
}));
//log out
FRegistry::User.ForgetAllCredentials();
var user = AccelBytePlugin.GetUser();
string email = "johnDoe@example.com";
string password = "Password1";
//upgrade v1
Result<UserData> upgradeResult = null;
user.Upgrade(email, password, result =>
{
upgradeResult = result;
});
Result logoutResult = null;
user.Logout(result =>
{
logoutResult = result;
});
- Unreal Engine
- Unity
const FString OriginalEmail = TEXT("originalEmail@example.com");
const FString Password = TEXT("Password1");
bool bUserLoggedIn = false;
FRegistry::User.LoginWithUsername(OriginalEmail, Password,
FVoidHandler::CreateLambda([&bUserLoggedIn]()
{
UE_LOG(LogAccelByteUserTest, Display, TEXT("Success."));
bUserLoggedIn = true;
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogTemp, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
static string email = "johnDoe@example.com";
static string password = "Password1";
public static void OnLogin(Result result)
{
if (!result.IsError)
{
// show the login result
Debug.Log("Login successful");
}
else
{
Debug.Log("Login failed:" + result.IsError);
}
}
public static void Main(string[] args)
{
User user = AccelBytePlugin.GetUser();
user.LoginWithUserName(email, password, OnLogin);
}
現在サインインしているユーザーのアカウントデータの取得
ユーザーデータを取得すると、ログインしているプレイヤーのすべての個人データを取得できます。
- Unreal Engine
- Unity
bool bGetDataSuccessful = false;
FAccountUserData GetDataResult;
FRegistry::User.GetData(
THandler<FAccountUserData>::CreateLambda([&](const FAccountUserData& Result)
{
UE_LOG(LogAccelByteUserTest, Log, TEXT("Success"));
bGetDataSuccessful = true;
GetDataResult = Result;
}),
FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
UE_LOG(LogAccelByteUserTest, Fatal, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
public static void OnGetUserData(Result<UserData> result)
{
if (result.IsError)
{
Debug.Log("Get data failed:", result.Error.Message);
}
else
{
Debug.Log("Get data successful.");
}
}
public static void Main(string[] args)
{
var user = AccelBytePlugin.GetUser();
user.GetData(OnGetUserData);
}
ユーザーデータを一括で取得する
次の関数を使用して目的のプレイヤーのユーザー ID を送信することで、公開プレイヤーデータを取得できます。公開プレイヤーデータには、プレイヤーのアバターの[AvatarUrl (アバター URL)]、[DisplayName (表示名)]、[UserId (ユーザー ID)]が含まれます。
- Unreal Engine
- Unity
TArray<FString> UserIds = {"userId1", "userId2", "userId3"};
bool bBulkUserInfoSuccess = false;
FListBulkUserInfo BulkUserInfoResult;
FRegistry::User.BulkGetUserInfo(UserIds, THandler<FListBulkUserInfo>::CreateLambda([&bBulkUserInfoSuccess, &BulkUserInfoResult](const FListBulkUserInfo& Result)
{
/* do something when succeed */
BulkUserInfoResult = Result;
bBulkUserInfoSuccess = true;
}),FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
/* do something when failed */
UE_LOG(LogAccelByteUserTest, Error, TEXT("Error. Code: %d, Reason: %s"), ErrorCode, *ErrorMessage)
}));
string[] userIds = {"userId1", "userId2", "userId3"};
Result<ListBulkUserInfoResponse> listBulkUserInfoData = null;
AccelBytePlugin.GetUser().BulkGetUserInfo(userIds, result =>
{
if(!result.IsError)
{
Debug.Log("Upload content request created");
listBulkUserInfoData = result;
}
else
{
Debug.Log("Error: " + result.Error.Code + " | Message: " + result.Error.Message);
}
});
関連するコンセプト
- プレイヤーがサードパーティログインを使用できるようにする方法については、認証ドキュメントを参照してください。