Twitch をアイデンティティプロバイダーとして設定する
注釈:本資料はAI技術を用いて翻訳されています。
概要
このガイドでは、認証済みの Twitch 開発者が Twitch アカウントを AccelByte Gaming Services (AGS) に接続する方法を説明します。ここに記載されていない追加機能を Twitch サービス側で設定する必要がある場合もあります。Twitch サービスの設定に関する詳細については、Twitch の担当者に直接お問い合わせいただくとともに、Twitch の公式ドキュメントを確認することをお勧めします。
このガイドは一般公開を目的としており、機密保持の観点から限定的な情報のみを記載しています。まずは機密版の完全なガイドを参照することをお勧めします。ガイドのコピーを入手するには、担当の AccelByte テクニカルプロデューサーにお問い合わせください。
目標
- AccelByte Game SDK を使用して、ゲームで Twitch 認証方式を有効にする。
- AccelByte Player Portal を使用して、パブリッシャーのウェブサイトで Twitch 認証方式を有効にする。
前提条件
Web ログイン統合
- 認証済みの Twitch アカウントと Twitch 開発者アクセス権。
- 認証の設定と権限管理を行うための AccelByte Admin Portal アカウント。
- Player Portal および Launcher 用のパブリッシャーネームスペース。
- Player Portal。
Web ログイン統合は現在 AGS Public Cloud では利用できず、AGS Private Cloud でのみサポートされています。
インゲームログイン統合
- 認証済みの Twitch アカウントと Twitch 開発者アクセス権。
- 認証の設定と権限管理を行うための AccelByte Admin Portal アカウント。
- ゲームネームスペース。
- 最新バージョンの AccelByte Game SDK をインポートした Unity または Unreal のゲームプロジェクト。
- AGS Identity and Access Management (IAM) クライアントに関する知識。
Twitch アプリの設定
Twitch 開発者組織のセットアップ(任意)
Twitch 開発者組織をセットアップします。組織の登録と管理ガイドの手順に従ってください。
Twitch 2FA の有効化
Twitch アカウントで 2FA を有効にします。二要素認証の設定ガイドの手順に従ってください。
アプリケーションの登録
Twitch 開発者コンソールでアプリケーションを登録します。アプリの登録ガイドの手順に従ってください。
Twitch 開発者コンソールでの設定に問題がある場合は、カスタマーサポートに連絡して AccelByte からガイドを入手してください。
AGS で Twitch ログインプロバイダーを設定する
Web ログイン
以下の手順に従ってパブリッシャーのウェブサイト向けの Twitch ログインを設定すると、プレイヤーは自分の Twitch アカウントでパブリッシャーのウェブサイトにログインできるようになります。
設定手順
-
AGS Admin Portal で、パブリッシャーネームスペースに移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。
-
Auth & Account Linking ページで、+ Add New ボタンをクリックします。

-
Select login provider ページで Twitch を探してクリックします。

-
Set up Twitch login provider フォームが表示されます。

-
以下のフィールドを入力します。
- Platform ID:
twitchです。自動的に設定されるため、変更できません。 - Client ID: Twitch 開発者コンソールで取得した Twitch アプリケーションの Client ID です。
- Client Secret: Twitch 開発者コンソールで取得した Twitch アプリケーションの Client Secret です。
- Redirect URI: Twitch ログイン用のリダイレクト URI(
<BaseURL>/iam/v3/platforms/twitch/authenticate)です。BaseURL はドメインアドレスで、例えばhttps://development.accelbyte.ioのようになります。この URL は、Twitch 開発者コンソールでも許可済みのリダイレクト URI として、まったく同じ形式で登録してください。
- Platform ID:
-
Add & Activate をクリックすると、プロバイダーの作成と有効化を一度に実行できます。有効化せずに作成する場合は、代わりに Add をクリックします。
ログインプロバイダーを編集する
-
Auth & Account Linking ページで、Twitch の項目をクリックします。
-
プロバイダーの設定内容を示すダイアログが表示されます。必要に応じて各フィールドを更新します。
-
画面上部の Status トグルで、プロバイダーを有効化または無効化します。

-
Save をクリックします。
試してみる
事前に、パブリッシャーネームスペースで Twitch ログイン方式が設定済みであることを確認してください。
-
Player Portal に移動し、Login をクリックします。

-
Twitch をクリックします。アイコンが見つからない場合は、More login options をクリックしてから Login with Twitch をクリックします。

-
Twitch アカウントの認証情報を使用してログインします。

現在、プレイヤーは既存の AccelByte アカウントに Twitch アカウントをリンクするか、新しいアカウントにリンクするかを求められます。AccelByte では、プレイヤーがヘッドレスアカウントで Player Portal に直接ログインできるように、これを設定可能にする取り組みを進めています。
インゲームログイン
以下の手順に従ってゲーム内の Twitch ログインを設定すると、プレイヤーは自分の Twitch アカウントでゲームにログインできるようになります。
設定手順
-
AGS Admin Portal で、ゲームネームスペースに移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。
-
Auth & Account Linking ページで、+ Add New ボタンをクリックします。

-
Select login provider ページで Twitch を探してクリックします。

-
Set up Twitch login provider フォームが表示されます。

-
以下のフィールドを入力します。
- Platform ID:
twitchです。自動的に設定されるため、変更できません。 - Client ID: Twitch 開発者コンソールで取得した Twitch アプリケーションの Client ID です。
- Client Secret: Twitch 開発者コンソールで取得した Twitch アプリケーションの Client Secret です。
- Redirect URI: BaseURL のドメインです。BaseURL はドメインアドレスで、例えば
https://development.accelbyte.ioのようになります。この URL は、Twitch 開発者コンソールでも許可済みのリダイレクト URI として、まったく同じ形式で登録してください。
- Platform ID:
-
Add & Activate をクリックすると、プロバイダーの作成と有効化を一度に実行できます。有効化せずに作成する場合は、代わりに Add をクリックします。
ログインプロバイダーを編集する
-
Auth & Account Linking ページで、Twitch の項目をクリックします。
-
プロバイダーの設定内容を示すダイアログが表示されます。必要に応じて各フィールドを更新します。
-
画面上部の Status トグルで、プロバイダーを有効化または無効化します。

-
Save をクリックします。
Twitch 用の IAM クライアントの作成
IAM クライアントは、対象プラットフォームでリリースしたいゲームクライアントを表すものです。
特定の SDK プラットフォーム(Xbox、Steam、PlayStation など)向けにゲームの IAM クライアントをすでに作成している場合は、新しい IAM クライアントを作成する必要はありません。Twitch はゲームを構築するプラットフォームではないため、既存の IAM クライアントを使用できます。IAM クライアントの詳細については、アプリケーションのアクセス制御を管理するを参照してください。
インゲームログイン統合
設定方法はゲームエンジンごとに異なります。以下のタブから使用しているゲームエンジンを選択してください。
- Unreal Engine Instructions
- Unity Engine Instructions
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" });
}
<YourProject>.Target.cs および <YourProjectEditor>.Target.cs にも AccelbyteUe4Sdk を追加します。
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 の認証情報を追加してください。
[/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://prod.gamingservices.accelbyte.io"
IamServerUrl="https://prod.gamingservices.accelbyte.io/iam"
PlatformServerUrl="https://prod.gamingservices.accelbyte.io/platform"
Unreal サンプルコードの実装
次のステップでは、以下のサンプルコードを使用してゲームに Twitch 認証方式を実装する方法を説明します。
- ログインコンテナとして、Blueprint 内に WebBrowser アイテムを作成します。
- Twitch ログイン URL をロードし、以下の認証パラメータを追加します。
- redirect_uri: ログイン完了時のリダイレクト先 URL。リダイレクト先はゲームに戻るため、値には BaseURL(ApiClient->Settings->BaseUrl)を入力します。また、許可リストに登録するため、Twitch 開発者ポータルの Redirect Uri 設定にも同じ BaseUrl の値を入力してください。
- response_type: 値には "code" を入力します。
- scope: 値には権限スコープを入力します。
スニペットで使用されている AccelByteOnlineSubsystemPtr を取得するには、このガイドに従ってください。
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient(TEXT("YOUR_KEY"));
auto UserApi = ApiClient->GetUserApi().Pin();
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://id.twitch.tv?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 = ApiClient->Settings->BaseUrl;
FString LoginCode = TEXT("");
if (Url.Contains(RedirectUri))
{
LoginCode = FGenericPlatformHttp::GetUrlParameter(Url, TEXT("code")).GetValue();
}
if (!LoginCode.IsEmpty())
{
UserApi->LoginWithOtherPlatform(AccelByte.Models.PlatformType.Twitch, LoginCode, FVoidHandler::CreateWeakLambda(this, [this]()
{
// ログイン成功時の処理
}),
FErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage)
{
// ログイン失敗時の処理
}));
// ログインページを閉じる(WebBrowser を非表示にする)
}
}
Twitch 認証における platform_token は Auth/Login Code です。
このサンプルコードをプロジェクトに追加したら、プロジェクトをコンパイルし、ビルドして実行します。以上で設定は完了です。
サンプルコードのテスト
以下は、サンプルコードが動作し、Twitch を使用してログインできていることを示すスクリーンショットです。

Unity のインゲームログイン統合
Twitch を AccelByte SDK のサインインに統合することで、プレイヤーは Twitch の認証情報を使用してゲームにログインできるようになります。
Unity の準備と設定
AccelByte Gaming Services 用の Unity プロジェクト設定
プロジェクトで AccelByte SDK を正しく動作させるには、AccelByte Admin Portal で作成した値を入力したうえで、以下の手順に従ってください。
- Game Client 設定用のファイルを AccelByteSDKConfig.json という名前で作成します。
- AccelByteSDKConfig.json ファイルをコピーし、Unity プロジェクトディレクトリの Assets/Resource ディレクトリに追加します。
- ゲームの情報に基づいて AccelByteSDKConfig.json ファイルを入力します。以下は JSON ファイルの例です。
{
"Default": {
"Namespace": "<Your Game Namespace>",
"UsePlayerPrefs": true,//Player Preferences を使用します
"EnableDebugLog": true,//デバッグログを有効にします
"DebugLogFilter": "Log",//デバッグログの種類
"BaseUrl": "https://prod.gamingservices.accelbyte.io",
"RedirectUri": "http://127.0.0.1",
"AppId": "<Your AppId>",
"PublisherNamespace": "<Your Publisher Namespace>"
}
}
- AccelByteServerSDKConfig.json という名前のファイルを作成し、Unity プロジェクトディレクトリの Assets/Resource ディレクトリに追加します。
- Game Server 設定として使用する以下のコードで AccelByteServerSDKConfig.json を更新します。以下は JSON ファイルの例です。
{
"Default": {
"Namespace": "<Your Game Namespace>",
"BaseUrl": "https://prod.gamingservices.accelbyte.io",
"RedirectUri": "http://127.0.0.1"
}
}
- AccelByteSDKOAuthConfig.json と AccelByteServerSDKOAuthConfig.json の 2 つのファイルを作成します。どちらのファイルも、Unity プロジェクトディレクトリの Assets/Resources ディレクトリに追加します。これら 2 つの JSON ファイルの内容は、以下のようになります。
{
"Default": {
"ClientId": "<Your IAM Client ID>",
"ClientSecret": "<Your IAM Client Secret>"
}
}
Unity サンプルコードの実装
次のステップでは、以下のサンプルコードを使用してゲームに Twitch 認証方式を実装する方法を説明します。
Twitch API を呼び出すためのカスタム SDK を作成する必要があります。以下はその例です。
[SerializeField] Button TwitchLoginButton;
[SerializeField] Text LoginStatus;
[SerializeField] private string clientId = "YOUR_TWITCH_CLIENTID";
[SerializeField] private string clientSecret = "YOUR_TWITCH_CLIENTSECRET";
[SerializeField] private string redirectUri = "YOUR_TWITCH_REDIRECTURI";
[SerializeField] private string authorizationUrl = "https://id.twitch.tv/oauth2/authorize";
[SerializeField] private string tokenUrl = "https://id.twitch.tv/oauth2/token";
string[] scopes = { "user:read:email" };
// AccelByte の Multi Registry 参照
private ApiClient apiClient;
private User user;
};
private const string authUrl =
private async void OnLoginClick()
{
TwitchLoginButton.interactable = false;
LoginStatus.text = "Logging in...";
string scopeStr = string.Join("%20", scopes);
string url = $"{authorizationUrl}?client_id={clientId}&redirect_uri={redirectUri}&response_type=code&scope={scopeStr}";
// デフォルトブラウザで URL を開く
Application.OpenURL(url);
// 認証コードを待機する
string authCode = await GetAuthorizationCode();
Debug.Log($"Twitch auth code: {authCode}");
LoginStatus.text = "Auth Code Received Login In";
}
private async Task<string> GetAuthorizationCode()
{
string authCode = "";
bool receivedAuthCode = false;
// ユーザーが認証プロセスを完了し、認証コードを受け取るまで待機する
float elapsedTime = 0;
float timeout = 10f; // ユーザーが認証プロセスを完了するまで待機する最大時間(秒)
while (!receivedAuthCode && elapsedTime < timeout)
{
authCode = await ListenForAuthorizationCode(redirectUri);
elapsedTime += 1f;
// 認証コードを受け取ったかどうかを確認する
if (!string.IsNullOrEmpty(authCode))
{
receivedAuthCode = true;
}
}
return authCode;
}
private async Task<string> ListenForAuthorizationCode(string redirectUri)
{
string authCode = "";
// リダイレクト URI を監視するための HttpListener インスタンスを作成する
var listener = new HttpListener();
listener.Prefixes.Add(redirectUri);
listener.Start();
// HttpListener でリクエストを受信するまで待機する
var context = await listener.GetContextAsync();
// リクエスト URI から認証コードを抽出する
var requestUri = context.Request.Url;
authCode = HttpUtility.ParseQueryString(requestUri.Query).Get("code");
// 認証コードを表示する HTML ページでリクエストに応答する
var response = context.Response;
var responseString = $"<html><body><h1>Authorization Code: {authCode}</h1></body></html>";
var buffer = Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
var output = response.OutputStream;
await output.WriteAsync(buffer, 0, buffer.Length);
// HttpListener を閉じて認証コードを返す
listener.Close();
return authCode;
}
}
以下のコードは、AccelByte SDK の LoginWithOtherPlatform を呼び出す例です。このメソッドは、GetAuthSessionTicket メソッドで取得した認証トークンを使用して、サードパーティプラットフォームでのログインを処理します。
var apiClient = AccelByteSDK.GetClientRegistry().GetApi();
var user = apiClient.GetUser();
Result < TokenData, OAuthError > loginResult = null;
user.LoginWithOtherPlatform(PlatformType.Twitch, AuthToken, (Result < TokenData, OAuthError > loginResult) => {
if (loginResult.IsError) {
//エラーが発生した場合、エラーと説明を取得してログに出力する
Debug.Log($ "Login failed : {loginResult.Error.error} Description : {loginResult.Error.error_description}");
//エラーがある場合、それを表示するようにステータステキストを設定する
LoginStatus.text = $ "Login failed : {loginResult.Error.error} Description : {loginResult.Error.error_description}";
} else {
Debug.Log($ "Login successful : {loginResult.Value}");
LoginStatus.text = $ "Success Login Twitch:{loginResult.Value.ToJsonString()}";
}
});
Twitch 認証における platform_token は Auth/Login Code です。
ログインハンドラースクリプトをプロジェクトに追加したら、プロジェクトをコンパイルします。
サンプルコードのテスト
これで、プロジェクトをビルドして実行できます。以下は、コードが動作し、Twitch とテストアプリを使用してログインできていることを示すスクリーンショットです。
