メインコンテンツまでスキップ

Set up Twitch as an Identity Provider

Last updated on November 23, 2023

概要

このガイドは、検証済みの Twitch デベロッパーが Twitch アカウントを AccelByte Gaming Services (AGS) に接続することを支援するためのものです。場合によっては、ここに記載されていない Twitch サービス内の追加機能を設定する必要があります。Twitch サービスの設定の詳細については、Twitch 担当者にお問い合わせいただき、また直接 Twitch のドキュメントを確認されることをお勧めします。

AccelByte デベロッパーパートナーマネージャーからリクエストできる機密ガイド資料をご用意しています。

目標

  • AccelByte Game SDK を使用して、ゲームの Twitch 認証方法を有効化する。
  • AccelByte プレイヤーポータルでパブリッシャーウェブサイトの Twitch 認証方法を有効化する。

前提条件

ウェブログイン統合の場合

  • 検証済み Twitch アカウントとデベロッパー Twitch アクセスを所有している必要があります。
  • 認証を設定し、権限を管理するための AccelByte 管理者ポータルアカウントを所有しておきます。
  • まだ設定していない場合は、プレイヤーポータルとランチャーのパブリッシャーの名前空間を設定します。
  • プレイヤーポータルを所有しておきます。

ゲーム内ログイン統合の場合

  • 検証済み Twitch アカウントとデベロッパー Twitch アクセスを所有している必要があります。
  • 認証を設定し、権限を管理するための AccelByte 管理者ポータルアカウントを所有しておきます。
  • まだ設定していない場合は、ゲームに対し、ゲームの名前空間を設定します。
  • AccelByte Game SDK をインポートしたUnityまたはUnrealゲームプロジェクトを所有しておきます。
  • 最新版の AccelByte Unity SDK または Unreal SDKを入手します。
  • AccelByte IAM クライアントに精通しておきます。

Twitch アプリの設定

Twitch デベロッパー組織の設定 (オプション)

Twitch デベロッパー組織を設定します。組織の登録と管理ガイド の指示に従ってください。

Twitch 二要素認証を有効化する

Twitch アカウントの二要素認証を有効化します。二要素認証設定ガイド の指示に従ってください。

アプリケーションの登録

アプリケーションを Twitch デベロッパーコンソールに登録します。アプリの登録ガイド の指示に従ってください。

注記

Twitch デベロッパーコンソールでの設定に問題がある場合は、カスタマーサポートに連絡して、AccelByte からガイドを入手してください。

Twitch ログイン方法の設定

ウェブログインの場合

次の手順を実行して、プレイヤーポータルで Twitch ログインを設定します。これでプレイヤーは Twitch アカウントを使用してプレイヤーポータルにサインインできます。

  1. AccelByte 管理者ポータルにログインし、[Publisher Namespace (パブリッシャーの名前空間)]を選択し、[User Management (ユーザー管理)]サイドバーの下にある[Login Method (ログイン方法)]をクリックし、右側の[+ Add New (+新規を追加)]ボタンをクリックします。 AccelByte Admin Portal Login

  2. Twitch]を選択します。 Twitch

  3. ログイン設定に Twitch アプリの認証情報を入力します。[Client ID (クライアント ID)]に Twitch クライアント IDを、[Client Secret (クライアントの秘密)]に Twitch のクライアントの秘密を入力し、[Redirect URI (リダイレクト URI)]に Twitch ログインリダイレクト URI:<BaseURL\>/iam/v3/platforms/twitch/authenticateを入力します(BaseURL はhttps://development.accelbyte.io) などのドメインアドレスです)。 Twitch Create Configuration

  4. 詳細ページにリダイレクトされます。その時点でアクティベートすると使用できます。 Activate Twitch

試行

Publisher Namespace (パブリッシャーの名前空間)]で[Twitch Login Method (Twitch ログイン方法)]を既に設定していることを確認してください。

  1. プレイヤーポータルに移動し>[Login (ログイン)]をクリックします。 AccelByte Player Portal

  2. Twitch ロゴをクリックします。アイコンが見つからない場合は、[More login options (その他のログインオプション)]をクリックし、[Login with Twitch (Twitch でログイン)]をクリックしてください。 AccelByte Player Portal Login

  3. Twitch アカウントの認証情報でログインします。 Twitch Login

注記

これで、プレイヤーは Twitch アカウントを既存の AccelByte アカウントと、あるいは新しいアカウントとリンクするよう求められます。AccelByte では、これを設定可能にするための取り組みを進めています。この設定により、プレイヤーがヘッドレスアカウントでプレイヤーポータルに直接ログインできるようになります。

ゲーム内ログインの場合

  1. AccelByte 管理者ポータルにログインし、[Game Namespace (ゲームの名前空間)]を選択し、[User Management (ユーザー管理)]サイドバーの下にある[Login Method (ログイン方法)]をクリックし、右側の[+ Add New (+新規を追加)]ボタンをクリックします。 AccelByte Admin Portal Login

  2. Twitch]を選択します。 Twitch

  3. ログイン設定に Twitch アプリの認証情報を入力します。[Client ID (クライアント ID)]に Twitch クライアント ID を、[Client Secret (クライアントの秘密)]に Twitch のクライアントの秘密を入力し、[Redirect URI (リダイレクト URI)]に BaseURL ドメイン(BaseURLはドメインアドレスです。例:https://development.accelbyte.io)を入力します。 Twitch Create Configuration

  4. 詳細ページにリダイレクトされます。その時点でアクティベートすると使用できます。 Activate Twitch

IAM クライアントの作成

IAM クライアントとは、ターゲットプラットフォームでリリースしたいゲームクライアントのことです。IAM クライアントを使用すると、ゲームクライアントは適切な権限を使用して、保護されている AGS リソースへのアクセスを要求できます。

特定の SDK プラットフォーム(XBox/Steam/PlayStation など)でゲーム用の IAM クライアントを既にお持ちの場合は、新しい IAM クライアントを作成する必要はありません。Twitch はゲームをビルドするためのプラットフォームではないため、既存の IAM クライアントを使用できます。IAM クライアントの詳細については、こちらのドキュメントhttps://docs.accelbyte.io/guides/access/iam-client.htmlを参照してください。

  1. Platform Configurations (プラットフォーム設定)]に移動し、次に[IAM Clients (IAM クライアント)]に移動します。

    IAM clients

  2. + Create New (+新規作成)]ボタンをクリックして、新しい IAM クライアントを作成します。

    Create IAM client

    a. [Client Type (クライアントタイプ)]には[Confidential (機密)]と入力します。[Confidential type (機密タイプ)]を使用することを強くお勧めします。なぜなら、AccelByte Gaming Services リソースにアクセスするために、場合によっては後でこの IAM クライアントにいくつかの権限を追加する必要があり、その場合[Public (公開)]タイプを使用していると適切なセキュリティが利用できないためです。

    b. [Secret (秘密)]を入力します。許容される形式で秘密を自分で入力するか、[Generate Client Secret (クライアントの秘密を作成)]をクリックすると、秘密鍵を生成できます。

    この作成ステップの後、クライアントの秘密は表示されません。必ずその値をコピーして保存してください。ゲームの設定時に必要になります。

    c. [Client Name (クライアント名)]を入力します。<game name> <target platform>といった特定の名前を名付けることができます。

    d. 特定のゲームの名前空間を選択します。

    e. [Scopes (スコープ)]はデフォルトのままでかまいません。

    f. [Redirect URI (リダイレクト URI)]は、ゲームクライアントビルド用なので、http://127.0.0.1を入力します。

    g. [Target Audience (ターゲットオーディエンス)]は空白のままでかまいません。

    h. [BASE URI (ベース URI)]も空白のままでかまいません。

    i. IAM クライアントは[Description (説明)]フィールドに記述できます。

    j. SDK 設定の[Platform Input (プラットフォーム入力)]とは、ゲームをビルドするためのターゲットプラットフォームを意味します。

    k. [Advanced Configuration (高度な設定)]は、二要素認証や有効期限の上書きなどの追加機能で構成されています。これはゲームクライアントビルド用なので、デフォルト/無効のままでかまいません。

    IAM client configuration

    IAM client configuration

    注記

    クライアント ID は既に生成されていて、コピーできます。後ほどゲームをビルドする際に、SDK 設定でクライアント ID を使用できます。

  3. [Client Detail (クライアントの詳細)]ページにリダイレクトされます。必要に応じて権限を設定してください。権限の詳細については、IAM クライアントの権限についてのドキュメントを参照してください。

    IAM Client detail

    IAM Client detail

ゲーム内ログイン手順

ゲームエンジンごとに設定が異なります。利用可能なタブからゲームエンジンを選択してください。

Unreal Engine でのゲーム内ログイン統合

Unrealの準備と設定

依存関係の追加

最初に AccelbyteUe4Sdk と呼ばれる公開依存関係モジュールを追加する必要があります。この依存関係は、プロジェクトを統合して Unreal Engine 内で Accelbyte SDK プラグインを使用するために必要となります。

public ABThirdPartyLogin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "AccelByteUe4Sdk", "Slate", "SlateCore" });

PrivateDependencyModuleNames.AddRange(new string[] { "Json", "HTTP" });

}

AccelbyteUe4Sdk<YourProject>.Target.cs<YourProjectEditor>.Target.csの内部に追加します。

public ABThirdPartyLoginTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "AccelByteUe4Sdk" } );
}
public ABThirdPartyLoginEditorTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "AccelByteUe4Sdk" } );
}

Twitch ログインのための Unreal Engine プロジェクト設定

DefaultEngine.ini ファイル内で、Accelbyte 認証情報を DefaultEngine.ini のこの部分に追加してください。

[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=<Your Client_Id>
ClientSecret=<Your Client_Secret>
Namespace=<Your Namespace>
PublisherNamespace=<Your Publisher Namespace>
RedirectURI="http://127.0.0.1"
BaseUrl="https://demo.accelbyte.io"
IamServerUrl="https://demo.accelbyte.io/iam"
PlatformServerUrl="https://demo.accelbyte.io/platform"

Unrealサンプルコードの実装

次のステップとして、以下のサンプルコードを使用してゲームの Twitch 認証方法を実装する方法を説明します。

  1. BluePrint で WebBrowser アイテムをログインコンテナとして作成します。
  2. ログイン Twitch URL を読み込み、以下の認証パラメータを追加します。
    1. redirect_uri:ログインが完了したときの RedirectURL。リダイレクトすると、BaseURL がゲームに入力した値に戻るからです (FRegistry::Settings.BaseUrl)。また、BaseUrl の値を Twitch デベロッパーポータルのリダイレクト URI 設定に入力して、ホワイトリストに登録します。
    2. response_type:値を "code" とします。
    3. scope:値として権限スコープを入力します。
void UAccelByteAuth::TwitchLogin()
{
FString TwitchClientId;
GConfig->GetString(TEXT("TwitchClientId"), TwitchClientId, GEngineIni);
FString RedirectUri = TEXT("YOUR_TWITCH_REDIRECTURI");
FString Scope = TEXT("user:read:email");

FString Url = FString::Printf(TEXT("https://your_domain?client_id=%s&redirect_uri=%s&response_type=%s&scope=%s"),
*FGenericPlatformHttp::UrlEncode(TwitchClientId),
*FGenericPlatformHttp::UrlEncode(RedirectUri),
TEXT("code"),
*FGenericPlatformHttp::UrlEncode(Scope));

WBrowser_LoginAuth->LoadURL(Url);
WBrowser_LoginAuth->OnUrlChanged.AddUniqueDynamic(this, &UAccelByteAuth::AccelByteLoginWithTwitch);
}
void UAccelByteAuth::AccelByteLoginWithTwitch(const FText& NewUrl)
{
FString Url = NewUrl.ToString();
FString RedirectUri = FRegistry::Settings.BaseUrl;
FString LoginCode = TEXT("");

if (Url.Contains(RedirectUri))
{
LoginCode = FGenericPlatformHttp::GetUrlParameter(Url, TEXT("code")).GetValue();
}

if (!LoginCode.IsEmpty())
{
FRegistry::User.LoginWithOtherPlatform(AccelByte.Models.PlatformType.Twitch, LoginCode, FVoidHandler::CreateWeakLambda(this, [this]()
{
// Handle Success Login
}),
FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorJson)
{
// Handle Error Login
}));

// Close Login Page (Hide WebBrowser)
}
}

このサンプルコードをプロジェクトに追加したら、プロジェクトをコンパイル、ビルド、実行します。以上です。

サンプルコードのテスト

以下にコードが動作し、Twitch とサンプルコードを使用してログインできることを示すスクリーンショットを提示します。 Unreal Code Testing