ユーザー認証を設定する
注釈:本資料はAI技術を用いて翻訳されています。
概要
ユーザー認証は、次の 2 つの手順で構成されます。
- 両方のアプリに対して Steam ログイン方式を設定します。
- ゲームクライアントから App ID を送信します。これにより、AGS はプレイヤーがどのアプリを起動したかを判別できます。
Steam ログイン方式を設定する
まだ Steam ログインを設定していない場合は、先に Steam をアイデンティティプロバイダーとして設定するの手順に従ってください。その後、2 つ目のアプリを有効にします。
- Admin Portal
- AGS CLI
-
AGS Admin Portal で、ゲームネームスペースに移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。
-
Steam SDK プロバイダーをクリックします。
-
Enable Steam multi app IDs を選択します。2 つ目のアプリの行が表示されます。
-
各行について、次のフィールドを入力します。
- App ID: Steam App ID。数値である必要があり、お使いの Steam パブリッシャーアカウントに属している必要があります。
- Name:
Demoなど、アプリを区別するためのラベル。AGS はこの名前をプレイヤーの認証には使用しません。
1 行目がデフォルトのアプリです。デフォルトを変更するには、行の順序を入れ替えます。
-
Steam Web API Key と Redirect URI は変更しないでください。この 2 つは両方のアプリで共有されます。
-
Save をクリックします。
パブリッシャーキーの配下に App ID が見つからない場合は、その行にエラーが表示されます。もう一方の行の値は保持されます。
アプリを削除するには、その行を削除して Save and remove をクリックします。
この手順では、既存の Steam ログイン方式を更新します。新しいログイン方式は作成されません。Steam ログイン方式を作成するには、Steam をアイデンティティプロバイダーとして設定するを参照してください。
-
複数アプリの設定のみを含む JSON ファイルを作成します。この例では
steam-multi-app.jsonを使用します。{
"AppId": "<FirstSteamAppId>",
"EnableMultipleAppIds": true,
"AppIds": ["<FirstSteamAppId>", "<SecondSteamAppId>"]
}AppId: 1 つ目のアプリで、デフォルトのアプリでもあります。AppIdsのエントリのいずれかである必要があります。AppIds: このネームスペースで許可される Steam App ID。重複は指定できません。すべての App ID が、お使いの Steam パブリッシャーアカウントに属している必要があります。
Secret、RedirectUri、IsActiveなど、省略したフィールドは現在の値が保持されます。 -
Steam ログイン方式を更新します。
<YourGameNamespace>をゲームネームスペースに置き換えてください。@の後には、JSON ファイルへのパスを指定します。ags iam platform-credentials update --namespace <YourGameNamespace> --platform-id steam --json @steam-multi-app.json
1 つのアプリに戻すには、同じ更新リクエストで "EnableMultipleAppIds": false と "AppIds": [] を送信します。
ゲームクライアントから App ID を送信する
ユーザー認証時に AGS が App ID を検証する仕組み
Steam の複数アプリが有効な場合、各 Steam ビルドは、ログインおよびアカウント連携のエンドポイントで、自身のアプリの App ID を appId パラメーターとして送信する必要があります。appId パラメーターは任意であるため、既存の統合はそのまま動作し、設定を有効にするまで影響を受けません。
次のエンドポイントは、リクエストペイロードで appId を受け付けます
| リクエスト | エンドポイント |
|---|---|
| ログイン | POST /iam/v3/oauth/platforms/{platformId}/token and POST /iam/v4/oauth/platforms/{platformId}/token |
| トークン検証 | POST /iam/v3/oauth/platforms/{platformId}/token/verify |
| プラットフォームアカウントの連携 | POST /iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId} |
| プラットフォームアカウントの強制連携 | POST /iam/v3/public/namespaces/{namespace}/users/me/platforms/{platformId}/force |
AGS は、他の処理を行う前に appId を確認します。結果は、Enable Steam multi app IDs がオンかオフかによって異なります。
- 設定オフ
- 設定オン
リクエストの appId | 結果 |
|---|---|
| 送信されない | 許可されます。AGS は設定済みの App ID を使用します。 |
| 設定済みの App ID と一致する | 許可されます。 |
| 設定済みの App ID と異なる | エラー 10253 で拒否されます。 |
リクエストの appId | 結果 |
|---|---|
AppIds リストに含まれる | 許可されます。 |
AppIds リストに含まれない | エラー 10253 で拒否されます。 |
| 送信されない | エラー 10252 で拒否されます。AGS は、プレイヤーがどのアプリを起動したかを推測しません。 |
AGS は、すべての Steam ログインで生成されるアクセストークンとリフレッシュトークンに、pa_id クレームも追加します。このクレームには、チケットの検証に使用された App ID が格納されます。Session サービスなどの他の AGS サービスは、pa_id クレームを読み取って、プレイヤーがどのアプリを起動したかを確認します。
SDK 統合ガイド
最新の AGS SDK にアップグレードしてください。Steam ログインおよびアカウント連携の呼び出しに、任意の App ID が追加されています。
- Unreal Engine SDK と Unreal OSS: バージョン未定
- Unity SDK: バージョン未定
- Unreal Engine
- Unity
Online Subsystem (OSS) を使用する場合
コードを変更する必要はありません。AccelByte OSS は、実行中の Steam アプリの App ID を Steam オンラインサブシステムから読み取り、Steam ログインおよびアカウント連携時に送信します。1 つのプロジェクトからビルドされたデモ版と製品版のゲームは、それぞれ自身の App ID を報告します。
OSS は、デフォルトで App ID を送信します。これを無効にするには、DefaultEngine.ini で bSendPlatformAppId を False に設定します。
[OnlineSubsystemAccelByte]
bSendPlatformAppId=False
ログイン認証情報の任意パラメーターに AppId を設定した場合、OSS は代わりにその値を使用します。
AGS Unreal SDK を直接使用する場合
Steam チケットを送信する各呼び出しの任意パラメーターに AppId を設定します。
| SDK の呼び出し | 任意パラメーターの構造体 |
|---|---|
LoginWithOtherPlatform, LoginWithOtherPlatformV4, LoginWithOtherPlatformId, LoginWithOtherPlatformIdV4 | FAccelByteLoginWithOtherPlatformOptionalParameters |
LinkOtherPlatform, LinkOtherPlatformId, ForcePlatformLinkV3 | FAccelByteLinkOtherPlatformOptionalParameters |
次の例では、Steam でログインします。Steam をアイデンティティプロバイダーとして設定するのデリゲートを再利用しています。<YourSteamAppId> を、このコードを実行するビルドの App ID に置き換えてください。
FAccelByteLoginWithOtherPlatformOptionalParameters OptionalParams{};
OptionalParams.AppId = TEXT("<YourSteamAppId>");
UserApi->LoginWithOtherPlatformV4(
EAccelBytePlatformType::Steam,
SteamTicket,
OnLoginSuccessDelegate,
OnLoginErrorOAuthDelegate,
bCreateHeadlessAccount,
OptionalParams);
アカウント連携も同様に行います。
FAccelByteLinkOtherPlatformOptionalParameters OptionalParams{};
OptionalParams.AppId = TEXT("<YourSteamAppId>");
UserApi->LinkOtherPlatform(
EAccelBytePlatformType::Steam,
SteamTicket,
OnLinkSuccessDelegate,
OnLinkErrorDelegate,
OptionalParams);
近日公開予定