Epic アカウント サービスの使用を開始する

お使いの Epic 製品に Epic アカウント サービス (EAS) を設定するための操作ガイド

Epic アカウント サービス (EAS) とは Epic Online Services (EOS) によって提供される個別のサービスで、ID プロバイダに依存しない各種 EOS サービスとは別の、Epic アカウント特有の一連のサービスを指します。Epic Online Services では Epic アカウント サービスの使用は必須ではありませんが、EAS を EOS で使用する ID プロバイダ として設定し、 Auth インターフェース を使用することができます。ID プロバイダに依存しない各種サービスの利用については、「接続インターフェース」を参照してください。

Epic アカウント サービスのアカウントとアプリケーションを設定する前に、以下の前提条件を満たしていることを確認してください。

  • デベロッパー ポータル にサインアップし、アカウントの 2 段階認証を有効にする。

  • 自分の 組織 を新しく作成するか、既存の組織に参加する。作業を進めるには、 Epic アカウント または管理者ロールが必要です。

  • Epic アカウント サービスを使用する製品を作成または選択する。

  • 最新版の EOS SDK をダウンロードする。詳細については、EOS の「クイック スタート ガイド」」を参照してください。

1. Developer Portal で Epic アカウント サービスにアクセスする

Epic アカウント サービスには Developer Portal のナビゲーション パネルか、製品のホーム ページからアクセスできます。

EAS ダッシュボードに進むには、 Epic アカウント サービスのサービス補遺 を確認してこれに同意する必要があります。同意した契約内容は、 Developer Portal[Organization (組織)] セクションにある [Licenses (ライセンス)] タブからいつでも確認できます。

また、「EPIC GAMES プライバシーポリシー」を確認して、Epic Games によるユーザー データの収集、使用、共有について十分に把握しておくことをお勧めします。

組織のタイプによっては、それぞれのライセンス契約を一度のみ同意すればよい場合 ( 組織 エンティティ) もありますが、個人 エンティティの場合は、EAS ダッシュボードへのアクセスを持つすべてのメンバーがそれぞれライセンス契約に同意する必要があります。

通常の EOS サービスでは、デベロッパーは Epic Games がサービス プロバイダーとして、ユーザーのデータをデベロッパーに代わって処理するように許可を与えています。 ただし、EAS の場合、Epic Games はユーザー データおよび認証フローを管理し、ユーザーの同意のもと、ユーザーに代わってこのデータおよび機能を提供しています。デベロッパーは、 Epic アカウント サービスのサービス補遺 の規定に基づき、許可された特定の使用目的のみにデータを使用することに同意します。

2. EAS アプリケーションをセットアップする

Epic アカウント サービス ダッシュボードで最初のアプリケーションの作成を開始できます。デベロッパー ポータルには作成するアプリケーションのためのプレースホルダーが表示されますが、設定の詳細は空です。

クリックして画像を拡大します。

アプリケーションの設定は主に以下の 3 つのセクションで構成されます。

  1. Brand Settings (ブランド設定): 名前、ロゴ、プライバシー ポリシー URL、サポート URL です。

  2. Permissions (許可): アプリケーションがユーザーに要求するアクセス許可です。

  3. Linked Clients (リンクされたクライアント): 認証フローにおいて SDK が使用する、アプリケーションとクライアント認証との関連付けです。

各セクションの設定を開始するには [Configure (設定)] をクリックします。

アプリケーション ブランド設定

最初に行うアプリケーション設定は アプリケーション ブランド設定 です。

クリックして画像を拡大します。

左側に同意ダイアログのプレビューが表示されます。これは Epic ユーザーに対して表示され、そのアプリケーションがユーザーの情報を共有する許可を要求します。このプレビューはモバイルおよび Web バージョンで利用可能です。

初回は同意ダイアログのプレビューの上部に、赤い警告バナーが表示されます。この警告は、危険性またはブランドのなりすまし行為の可能性に関して、アプリケーション ブランド設定のレビューが完了していないことを示すものです。さらに、未検証のアプリケーションの場合、同意ダイアログに先立って別の警告ダイアログが表示されます。この 2 段階の警告は、未検証のアプリケーションで処理を続行することに伴う結果についてユーザーに十分に理解してもらうことを目的としています。

すべてのアプリケーションは未検証で作成され、オーディエンス制限が設定されます。同一の開発組織に属するメンバーのみが Epic Games アカウントを使用してこの未検証アプリケーションに対して認証を行うことができます。他のすべてのユーザーにはオーディエンス制限のエラー メッセージが表示されます。これらのオーディエンス制限は、Epic ユーザーを保護すると同時に、ブランド レビューのためのアプリケーション準備の間に、デベロッパーが繰り返し統合を行えるようにすることを意図しています。

Epic アカウント サービス は、プレビュー モードでの利用となり、当面は制限があります。これは、アプリケーション ブランド レビュー プロセスが現在未完成で近日完成予定であるためです。更新情報をお待ち下さい。

これらの制限を取り払うには、右側のフィールドに詳細情報を入力し、アプリケーション ブランド レビューにサブミットする必要があります。このようなプラグインには、以下のものがあります。

  • アプリケーション名: ユーザーに表示するアプリケーションのフレンドリ名。デフォルトでは製品名が設定されています。

  • プライバシー ポリシーの URL: ユーザーがアプリケーションのプライバシー ポリシーを確認できる URL。

  • アプリケーション ロゴ: 同意ダイアログでアプリケーションのシンボルとして使用される 128 x 128 の不透過の PNG または JPG ファイル。

これらのフィールドを更新すると、プレビューに変更が反映され、即座に更新されます。

クリックして画像を拡大します。

アプリケーションを作成してブランド設定を保存したら、次のタブに移動します。

アプリケーション許可

[Parmissions (許可)] タブではアプリケーションがユーザーに要求するアクセスのレベルを定義します。

クリックして画像を拡大します。

Epic アカウント サービス には以下の 3 つの基本的な許可が備わっています。

  • Basic Profile (基本プロファル): ユーザーの表示名、言語設定、リンクされたアカウントの表示名の読み取りを許可します。

  • Online Presence (オンライン プレゼンス): 現在のユーザーのオンライン プレゼンスの設定およびユーザーのフレンドのオンライン プレゼンスの更新を受け取ることを許可します。

  • Friends (フレンド): 現在のユーザー アカウントのフレンド リストへの読み取りアクセスを許可します。

Epic アカウント サービス では基本設定は常に必要で無効にはできません。設定していない場合、ユーザー データにはアクセスできません。Online Presence と Friends はアプリケーションでの必要に応じて有効か無効かを設定できます。アプリケーションで有効にしたい場合は許可を有効に切り替え、[Save] をクリックして変更を保存します。許可の追加または削除を反映して同意ダイアログ プレビューが更新されます。

クリックして画像を拡大します。

アプリケーション クライアント

最後は [Clients (クライアント)] タブで、アプリケーションと関連付けられたクライアントのリストを設定することができます。クライアント とは、Epic アカウント サービス のバックエンドでアプリケーションのデータにアクセス可能な任意のソフトウェアまたは Web サイトです。アプリケーションに関連付けられたクライアントがすべて「Product Settings」に表示され、与えられたユーザーの許可がそれらによって共有されます。

クリックして画像を拡大します。

アプリケーションでクライアントを設定済みの場合は、[Select Clients (クライアントを選択)] ドロップダウンから選択できます。それ以外の場合は、[Create New Client (新規クライアントの作成)] をクリックして [Product Settings] ページを開き、新規クライアントを設定してください。新規クライアントの追加についての詳細は、「クライアント資格情報」を参照してください。

リストへのクライアントの追加が完了したら、[Save] ボタンをクリックして変更を保存します。

クリックして画像を拡大します。

ここまでで EAS アプリケーションの設定が完了しました。これで EAS を製品に統合し、これによってユーザー データにアクセスする準備ができました。サブミットしたアプリケーション ブランド設定のレビューが完了すると、オーディエンス制限が解除され、アプリケーションが組織外のユーザーから見えるようになります。

クリックして画像を拡大します。

3. EOS SDK で Epic Games ユーザーを認証する

EOS SDK では Epic アカウントを使用する際に特別な設定は必要ありません。ただし、ターゲット プラットフォームに適切なログイン タイプを使用する必要があり (「 Auth インターフェース 」を参照)、 ブランド レビュー アプリケーション (プロファイル、プレゼンス情報、フレンズ リスト) で指定したログイン呼び出しにおいてユーザーの同意を求めるスコープを必ず含める必要があります。

たとえば、PC のアカウント ポータル経由でログインする場合は、ログイン呼び出しは以下のようになります。

EOS_Auth_Credentials Credentials = { 0 };
Credentials.ApiVersion = EOS_AUTH_CREDENTIALS_API_LATEST;
Credentials.Type = EOS_LCT_AccountPortal;

EOS_Auth_LoginOptions LoginOptions = { 0 };
LoginOptions.ApiVersion = EOS_AUTH_LOGIN_API_LATEST;
LoginOptions.ScopeFlags = EOS_AS_BasicProfile | EOS_AS_FriendsList | EOS_AS_Presence;
LoginOptions.Credentials = &Credentials;

EOS_Auth_Login(AuthHandle, &LoginOptions, NULL, OnLoginCallback);

これによってデフォルトのシステム ブラウザが起動し、ユーザーにログインとアクセス アプリケーション リクエストの確認を求めます。

4.Web サイトで Epic Games ユーザーを認証する

Web サイトおよび Web アプリケーションの認証では、 OpenID Connect Core 1.0 の承認コード フローがサポートされますが、開始する前に ブランド レビュー アプリケーションクライアント資格情報 を設定する必要があります。

ユーザーの承認

認証フローを開始するには、アプリケーションでユーザーを承認ページにリダイレクトする必要があります。ユーザーは承認ページで Epic Games アカウントにログインします。

ユーザーを次の認証 URL にリダイレクトします。

https://www.epicgames.com/id/authorize?client_id={client_id}&response_type=code&scope=basic_profile&redirect_uri=https://www.example.com&state=rfGWJux2WL86Zxr6nKApCAnDo8KexEUE

追加の許可をリクエストするには、必要な許可のリスト (スペース区切り) を使って承認リクエストのスコープ パラメータを変更します。For example, scope=basic_profile friends_list.

次に、Developer Portal でクライアント向けのリダイレクト URL を設定します。

ログイン時にユーザーはリクエストされた許可の承認を要求されます。ユーザーが同意すると、ユーザーは code パラメータとともにアプリケーションにリダイレクトされます。このコードはアクセス トークンをリクエストする際に使用されます。

Epic Games では、リクエストとコールバック間の状態の維持に使用可能なオプションの state パラメータをサポートしています。これによって「クロスサイト リクエスト フォージェリ攻撃」を防止します。

以下はユーザー認証後のリダイレクト URL の例です。

https://www.example.com/?code=cfd1de1a8d224203b0445fe977838d81&state=rfGWJux2WL86Zxr6nKApCAnDo8KexEUE

アクセス トークンをリクエストする

アクセス トークンをリクエストするために、クライアントがリクエストをトークン エンドポイントに送信します。これにはクライアント資格情報と承認コードが含まれます。Epic Games トークン エンドポイントは https://api.epicgames.dev/epic/oauth/v1/token です。

クライアント資格情報が基本の 承認Authorization ヘッダ内に渡されます。

また、リクエストには authorization_code グラント種別を指定し、 承認フロー で取得したコードとリダイレクト URL も含める必要があります。

以下のスニペットはリクエストの例です (パスワード グラント種別を使用)

POST /epic/oauth/v1/token HTTP/1.1
Host: api.epicgames.dev
Content-Type: application/x-www-form-urlencoded
Authorization:Basic Zm9vOmJhcg==
grant_type=authorization_code&
deployment_id=foo&
scope=basic_profile&
code=cfd1de1a8d224203b0445fe977838d81&
redirect_uri=https://www.example.com

応答には以下のフィールドが含まれます。

応答

説明

access_token

アクセス トークン。プレフィックスを含む場合があります (例:eg1~token) 。Epic サービスに対するすべてのリクエストで、この値は Bearer タイプを使用して、そのままの形で Authorization ヘッダに渡される必要があります。

expires_in

トークンの有効期限切れまでの秒数。

expires_at

ISO 8601 形式での有効期限日付。

account_id

トークンが発行されるユーザーの Epic アカウント ID。

client_id

このトークンを発行するために使用されるクライアント ID。

application_id

クライアントが関連付けられるアプリケーション ID。

token_type

発行されるトークンのタイプ。値は常に bearer です。

refresh_token

クライアントの設定に応じ、オプションでリフレッシュ トークンが返されます。このリフレッシュ トークンを使用して、有効期限の前または後でセッションを延長することができます。

refresh_expires

リフレッシュ トークンが有効期限になるまでの秒数。

refresh_expires_at

リフレッシュ トークン の ISO 8601 形式での有効期限。

以下のスニペットはリクエストの例です。

{
  "scope": "basic_profile",
  "token_type": "bearer",
  "access_token": "eyJ0IjoiZXBpY19pZCIsImFsZyI6IlJTMjU2Iiwia2lkIjoibldVQzlxSFVldWRHcnBXb3FvVXVHZkFIYmVWM2NsRnlsdFRYMzhFbXJKSSJ9.eyJhdWQiOiJ4eXphNzg5MWxoeE1WWUdDT043TGduS1paOEhRR0Q1SCIsInN1YiI6Ijk2MjZmNDQxMDU1MzQ5Y2U4Y2I3ZDdkNWE0ODNlYWEyIiwidCI6ImVwaWNfaWQiLCJzY29wZSI6ImJhc2ljX3Byb2ZpbGUgZnJpZW5kc19saXN0IHByZXNlbmNlIiwiYXBwaWQiOiJmZ2hpNDU2N08wM0hST3hFandibjdrZ1hwQmhuaFd3diIsImlzcyI6Imh0dHBzOlwvXC9hcGkuZXBpY2dhbWVzLmRldlwvZXBpY1wvb2F1dGhcL3YxIiwiZG4iOiJLcm5icnkiLCJleHAiOjE1ODgyODYwODMsImlhdCI6MTU4ODI3ODg4Mywibm9uY2UiOiJuLUI1cGNsSXZaSkJaQU1KTDVsNkdvUnJDTzNiRT0iLCJqdGkiOiI2NGMzMGQwMjk4YTM0MzdjOGE3NGU1OTAxYzM0ODZiNSJ9.MZRoCRpjIb--dD7hxoo2GvjSPhUSNpOq1FhtShTBmzMJ1qlHFPzNaUiAEETAc3mabGPKyOxUP6Q1FBadr_P_UtbtB7kf34hN2VTv5czW6WOx1HdpjwUQZuxFyDc_aix7FCS0Egu4rZlC65b-B0FUVlial_s_FrH8ou5L_d-4I0KVpIwtv-b_M6EQ9jtLdQRfMaP6aV0rIerrbqFZ617Pe7XT4IO9jZFwM8F5aDTeDHkkOO41wyVibrm38799lP4B65RIv9CwbAL-TVmV1L5gFYITaZhi5ShfZzTvxAk-3Dxwp8c5JvcO68zpbya5gFSAfhsd7vt9YLU0gQR2uXq3Vw",
  "refresh_token": "eyJ0IjoiZXBpY19pZCIsImFsZyI6IlJTMjU2Iiwia2lkIjoibldVQzlxSFVldWRHcnBXb3FvVXVHZkFIYmVWM2NsRnlsdFRYMzhFbXJKSSJ9.eyJhdWQiOiJ4eXphNzg5MWxoeE1WWUdDT043TGduS1paOEhRR0Q1SCIsInN1YiI6Ijk2MjZmNDQxMDU1MzQ5Y2U4Y2I3ZDdkNWE0ODNlYWEyIiwidCI6ImVwaWNfaWQiLCJhcHBpZCI6ImZnaGk0NTY3TzAzSFJPeEVqd2JuN2tnWHBCaG5oV3d2Iiwic2NvcGUiOiJiYXNpY19wcm9maWxlIGZyaWVuZHNfbGlzdCBwcmVzZW5jZSIsImlzcyI6Imh0dHBzOlwvXC9hcGkuZXBpY2dhbWVzLmRldlwvZXBpY1wvb2F1dGhcL3YxIiwiZG4iOiJLcm5icnkiLCJleHAiOjE1ODgzMDc2ODMsImlhdCI6MTU4ODI3ODg4MywianRpIjoiYzczYjA2NmUyZDU4NGVkNTk0NjZiOThiNzI3NzJiMjAifQ.O-eVa46NimubKwxe9SwlHxciivu0XWe1-DSL74mMiA_PpPoW0yKL9DfmsLxiPCwsRB5_hQTc6_FM7G1FyfKtX_VVAp90MZPkhCbAbfKmTpQVcL0Ya6kve4KMG8KxeLVfLLhubCbJTYlnDNVHobbpvpQtHd8Ys321ZNDJj05l_tnZzdgus-xmCO6orX4UP4wDd1jAOXXeqRT47OXuLCgSE0q6Osfh-ENPwh6ph1i7ld759xPV0oNcQb8XiPxnT6_FUmFugzG1YS1z9bTnVWmbP2RmYluue5VQm5EKGJZ91Alve8s2eNEtDfUqaBLZ45pqGkc1KjbYTtP0a_1ue2BpkQ",
  "expires_in":7200,
  "expires_at":"2020-04-30T22:34:43.549Z",
  "refresh_expires_in":28800,
  "refresh_expires_at":"2020-05-01T04:34:43.549Z",
  "account_id":"9626f441055349ce8cb7d7d5a483eaa2",
  "client_id": "xyza7891lhxMVYGCON7LgnKZZ8HQGD5H",
  "application_id": "fghi4567O03HROxEjwbn7kgXpBhnhWwv"
}

アクセス トークンは Epic Games サービスへの Authorization ヘッダに含まれるため、常に渡す必要があります。使用するコマンドの例:Bearer eyJraWQiOiJ0RkM...`

エンドポイント

名前

URL

OpenID Configuration

https://api.epicgames.dev/epic/oauth/v1/.well-known/openid-configuration

Authorization

https://www.epicgames.com/id/authorize

Token

https://api.epicgames.dev/epic/oauth/v1/token

User Info

https://api.epicgames.dev/epic/oauth/v1/userInfo

Token Info

https://api.epicgames.dev/epic/oauth/v1/tokenInfo

JWKs

https://api.epicgames.dev/epic/oauth/v1/.well-known/jwks.json