アイデンティティプロバイダーとしてのGoogle Play Games
注釈:本資料はAI技術を用いて翻訳されています。
概要
このガイドでは、Google Play GamesアカウントをAccelByte Gaming Services (AGS) に接続する方法を説明します。Google Play GamesはGoogleサインインとは別の仕組みであり、Google Play Games Services SDKを使用するAndroidゲーム向けの機能です。標準のGoogleサインインについては、アイデンティティプロバイダーとしてのGoogleの設定を参照してください。ゲームによっては、このガイドに記載されていないGoogle Playサービスの機能を追加で設定する必要がある場合があります。Google Playサービスの設定の詳細については、Googleの担当者にお問い合わせいただくとともに、Google Playドキュメントを直接ご確認いただくことをお勧めします。
このガイドは一般公開用であり、機密保持のため一部の情報のみを掲載しています。まずは完全版の機密ガイドをご参照いただくことをお勧めします。機密ガイドの提供をご希望の場合は、担当のAccelByteテクニカルプロデューサーにお問い合わせください。
目標
AGS SDKを使用して、ゲームでGoogle Play認証を有効にします。
前提条件
- Google Cloud Consoleのアカウントを保有していること。
- Google Play Consoleのアカウントを保有していること。
- Unreal Engineを使用する場合は、以下が必要です。
- JDK 1.8.X のソース。
- Android Studio 4.0。Setting Up Android SDK and NDK for Unreal のガイドに従ってください。
- Unreal Engine 5.1.1のソースコード
- AGS Game SDKとOSSをインポートしたUnrealゲームプロジェクト。
- 最新バージョンのAGS Unreal SDKおよびOSS。
- Unity Engineを使用する場合は、以下が必要です。
- Unity Android Environment Setup に従って環境を構築していること。
- 最新バージョンのAGS
Unity SDKおよびAccelByte Google Play Games Unity SDK。
- 認証の設定と権限の管理を行うためのAGS Admin Portalアカウントを保有していること。
- AGS IAM Clientsに関する知識があること。
Google Playの設定
Google Androidアプリの作成
Googleアプリを作成します。Create and set up your app のガイドに従ってください。
- Unreal Engine手順
- Unity Engine手順
指定したkeystoreを使用して、空のUnrealプロジェクトをAndroid App Bundle (AAB) 形式でビルドします。Unrealプロジェクト用のkeystoreを生成する方法の詳細については、UnrealのSigning Projects for Release の記事を参照してください。
指定したkeystoreを使用して、空のUnityプロジェクトをAAB形式でビルドします。Unityプロジェクト用のkeystoreを生成して使用する方法の詳細については、UnityのAndroid Keystore の記事を参照してください。
プロジェクトのリリースを作成
アプリのリリースを作成します。Prepare and roll out a release guideに従ってください。
Google Play Games Servicesの設定
Google Play Games Servicesを設定します。Set Up Google Play Games Services guideに従ってください。以下を行う必要があります:
- Play Games Servicesプロジェクトを作成します。
- Google Cloud PlatformでOAuth同意画面を作成します。OAuth consent screenで、アプリに次の4つのスコープを追加します:
openid.../auth/games.../auth/games_lite.../auth/drive.appdata
- AndroidとGame Server認証情報を作成します。
すべての設定が完了したら、レビューして公開します。
AGSでGoogle Play Gamesログインプロバイダーを設定
次の手順に従って、ゲームのGoogle Play Gamesログインを設定します。これにより、プレイヤーは自身のGoogle Play Gamesアカウントを使用してゲームにサインインできるようになります。
-
AGS Admin Portalで、対象のゲームnamespaceに移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linkingに移動します。

-
Auth & Account Linkingページで、+ Add Newをクリックします。
-
Select login providerページで、Gaming Platformタブ内のGoogle Play Gamesを探してクリックします。

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

-
以下のフィールドに入力します。
- Platform ID:
googleplaygames。自動的に設定されるため、変更はできません。 - Client ID: Google Cloud Consoleで取得したOAuth Client ID。
- Client secret: Google Cloud Consoleで取得したOAuth Client Secret。
- Redirect URI: OAuthのコールバックURL。デフォルトで
http://127.0.0.1が入力されています。
- Platform ID:
-
Add & Activateをクリックすると、プロバイダーの作成と有効化を一度に実行できます。有効化せずに作成のみを行う場合は、Addをクリックしてください。

ログインプロバイダーの編集
-
Auth & Account Linkingページで、Google Play Gamesの項目をクリックします。
-
プロバイダーの設定内容を表示するダイアログが開きます。必要に応じて各フィールドを更新します。
-
画面上部のStatusトグルで、プロバイダーの有効化または無効化を切り替えます。
-
Saveをクリックします。
IAMクライアントの作成
IAMクライアントは、ターゲットプラットフォームでリリースするゲームクライアントを表すものです。IAMクライアントの詳細については、Manage access control for applicationsを参照してください。
ゲーム内ログイン手順
このドキュメントに従うことで、AGS SDKを使用してゲームのサインインプロセスを統合し、プレイヤーがGoogle Playアカウントでゲームにログインできるようにします。プレイヤーがGoogle認証情報でゲームまたはプラットフォームにログインするには、その認証情報を保持するGoogleプラットフォームから取得したAuth tokenを、ゲームからパブリッシャープラットフォームに渡す必要があります。
各ゲームエンジンの設定は異なります。利用可能なタブからゲームエンジンを選択してください。
- Unreal Engine手順
- Unity Engine手順
ゲーム内ログイン統合 (Unreal)
Unreal Engineプロジェクトの作成
新しいUnreal Engineプロジェクトを作成したら、プロジェクト内でいくつかの設定を行う必要があります。
OnlineSubsystemGoogleプラグインとサービス設定を有効にする
.uprojectファイルでプラグインを有効にします。
{
"Plugins": [
{
"Name": "AccelByteUe4Sdk",
"Enabled": true
},
{
"Name": "OnlineSubsystemAccelByte",
"Enabled": true
},
{
"Name": "OnlineSubsystemGooglePlay",
"Enabled": true
},
{
"Name": "OnlineSubsystemGoogle",
"Enabled": true
}
]
}
DefaultEngine.ini内で、Google Cloudプラットフォームからの認証情報を設定して追加します。
[OnlineSubsystem]
DefaultPlatformService=GooglePlay
NativePlatformService=Google
[OnlineSubsystemGoogle]
bEnabled=True
ClientId=123456789-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com
ServerClientId=123456789-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com
ClientSecret=abcdefghijklmnopqrstuvwxyz123456789
[OnlineSubsystemGoogle.OnlineIdentityGoogle]
+ScopeFields="email"
+ScopeFields="profile"
+ScopeFields="https://www.googleapis.com/auth/userinfo.email"
+ScopeFields="https://www.googleapis.com/auth/userinfo.profile"
[OnlineSubsystemGooglePlay]
bEnabled=True
[OnlineSubsystemGooglePlay.Store]
bSupportsInAppPurchasing=True
bUseStoreV2=False
[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=abcdefg12345
ClientSecret=abcdefg12345
Namespace=test
PublisherNamespace=accelbyte
BaseUrl="https://prod.gamingservices.accelbyte.io"
QosPingTimeout=0.6
-
<PROJECT>.Build.csファイルに次のコードを追加します。if (Target.Platform == UnrealTargetPlatform.Android)
{
PrivateDependencyModuleNames.AddRange(new string[]
{
"OnlineSubsystemGoogle",
"OnlineSubsystemGooglePlay",
});
} -
Platforms - Androidで、このプロジェクト設定とGoogleコンソールで定義されたパッケージ名を一致させます。
-
Platforms - Android Distribution Settingで、配布署名を設定します。詳細については、Signing Projects for Releaseを参照してください。
-
Platforms - Android - Google Play Serviceで、Google Play ConsoleからGames App IDとGoogle Play License Keyを取得します。
- Games App IDはPlay Games Services > Configurationにあります
- Google Play License KeyはMonetize > Monetization Setup > Licensingにあります
-
Platforms - Android SDKで、エンジンバージョンに基づいてフィールドを設定します。詳細については、Unreal Engine Version Historyを参照してください。
Google PlayネイティブログインとAGS Accessの実装
- 必要なサブシステムとインターフェースを初期化します。
const IOnlineSubsystem* OnlineSubsystemNativePtr = IOnlineSubsystem::GetByPlatform();
const IOnlineIdentityPtr OnlineIdentityNativePtr = OnlineSubsystemNativePtr->GetIdentityInterface();
const IOnlineExternalUIPtr NativeExternalUI = OnlineSubsystemNativePtr->GetExternalUIInterface();
- Google PlayでログインするためのログインUIを実装します。
FDelegateHandle NativeOnLoginCompleteDelegateHandle;
const FOnLoginCompleteDelegate NativeLoginComplete = FOnLoginCompleteDelegate::CreateLambda(
[&](int32 LoggedInLocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, FString Error)
{
// Put your next implementation here.
OnlineIdentityNativePtr->ClearOnLoginCompleteDelegate_Handle(0, NativeOnLoginCompleteDelegateHandle);
});
NativeOnLoginCompleteDelegateHandle = OnlineIdentityNativePtr->AddOnLoginCompleteDelegate_Handle(0, NativeLoginComplete);
NativeExternalUI->ShowLoginUI(0
, true
, false
, FOnLoginUIClosedDelegate::CreateLambda([this, &OnlineIdentityNativePtr, &NativeOnLoginCompleteDelegateHandle, &Result, &bNativeLoginSuccess](FUniqueNetIdPtr UniqueId, const int ControllerIndex, const FOnlineError& Error)
{
// Put your next implementation here.
}));
- ユーザーがGoogle Playログインを完了したら、Auth ID Tokenを取得します。
FString GooglePlayToken = TEXT("");
if (!NativeUserAccountPtr->GetAuthAttribute(AUTH_ATTR_ID_TOKEN, GooglePlayToken))
{
// Do something when Google Play failed to retrieve the Auth Id Token
}
- 実装を完了するには、以前に取得したトークンを使用してAGSにログインします。
const IOnlineIdentityPtr OnlineIdentityABPtr = OnlineSubsystemABPtr->GetIdentityInterface();
FDelegateHandle ABOnLoginCompleteDelegateHandle;
{
const FOnLoginCompleteDelegate ABLoginComplete = FOnLoginCompleteDelegate::CreateLambda(
[&](int32 LoggedInLocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, FString Error)
{
// Put your next implementation here.
OnlineIdentityABPtr->ClearOnLoginCompleteDelegate_Handle(0, ABOnLoginCompleteDelegateHandle);
});
ABOnLoginCompleteDelegateHandle = OnlineIdentityABPtr->AddOnLoginCompleteDelegate_Handle(0, ABLoginComplete);
}
FOnlineAccelByteAccountCredentials OnlineAccountCredentialsNative(
EAccelByteLoginType::GooglePlayGames,
"",
GooglePlayToken,
true);
OnlineIdentityABPtr->Login(0, OnlineAccountCredentialsNative);
ゲーム内ログイン統合 (Unity) (非推奨)
AccelByte Unity SDK Google Play Games拡張機能は非推奨です。Google as Identity Providerガイドに従って、AccelByte Unity SDK Googleを使用してください。
AccelByte Unity SDK Google Play Games拡張機能を使用すると、Google Playの機能をAGSと統合できます。この拡張機能はGitHubで見つけてダウンロードできます。拡張機能をインストールしてゲームにGoogleログインを実装するには、GitHubの拡張機能のinstallation guideに従ってください。
Google Play Games Android設定のセットアップ
- プロジェクトで、Window > Google Play Games > Setup > **Android setup...**に移動します。
- 次のように必要な情報を入力します:
- Resources Definition: Play ConsoleからのAndroidリソースデータを使用します。
- Web client ID: 生成されたOAuth credentialsからのClient IDを使用します。
- Setupをクリックします。これにより、クライアントIDでゲームが設定され、各Androidリソースの定数を含むC#クラスが生成されます。