您可以使用 Google Play 遊戲服務讓玩家登入 Android 遊戲
以 Firebase 和 Unity 為基礎開發而成如何透過以下帳戶使用 Google Play 遊戲服務登入:
Firebase,請先透過 Google Play 遊戲登入玩家,然後要求
驗證 OAuth 2.0 驗證碼。接著,將驗證碼傳遞至
PlayGamesAuthProvider
產生 Firebase 憑證,您可以使用該憑證執行以下操作
進行驗證
事前準備
設定 Unity 專案
在 Unity 專案中新增 Firebase 設定檔和 Firebase Unity SDK 將 Firebase 新增至您的 Unity 專案。 按照 Android 適用的操作說明進行。
請務必匯入
FirebaseAuth.unitypackage
。在 Unity 編輯器中的「Build Settings」>「Build Settings」之下。播放器設定 >其他 設定設定遊戲的 Android 套件名稱。
接著在「Build Settings」>「Build Settings」之下。播放器設定 >發布設定 選取或建立用來簽署 Android 的 KeyStore 和金鑰 套件。您的 APK 必須登入 Play 遊戲才能正常運作, 要求不僅適用於發布作業,在開發 您的遊戲。
設定 Firebase 專案
在 Firebase 控制台中,前往 Firebase 專案 。
前往 「設定」頁面 使用您在 Unity 中設定的金鑰Firebase。
您可以使用
keytool
指令取得金鑰的 SHA-1 指紋:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
您也可以透過 gradle
signingReport
指令:gradlew signingReport
您的 APK 必須使用這組金鑰簽署,包括開發期間。
將 Google Play Games 設為登入提供者:
在 Firebase 控制台中,開啟 Authentication 專區。
產生並取得專案的網路伺服器用戶端 ID 和用戶端 密鑰:
在「Sign in method」分頁中啟用 Google 登入功能 。
複製 Google 登入中的網路伺服器用戶端 ID 和密鑰 。
在「Sign in method」分頁中啟用 Play Games ,並指定專案的網路伺服器用戶端 ID,然後 用戶端密碼。
使用 Firebase 應用程式資訊設定 Play Games services
在 Google Play 控制台, 請開啟或建立一個「Google Play」應用程式。
在「拓展」部分中,按一下 Play Games services >設定和管理 >設定。
按一下「是,我的遊戲已在使用 Google API」,選取您的 Firebase 然後按一下「使用」。
在 Play Games services 設定頁面中按一下 新增憑證。
- 選取「遊戲伺服器」類型。
- 在「OAuth 用戶端」欄位中,選取專案的網路用戶端 ID。成為 這是您啟用功能時指定的用戶端 ID 目前登入次數:Play Games。
- 儲存變更。
在「Play Games services」設定頁面,按一下 重新新增憑證。
- 選取「Android」類型。
- 在「OAuth 用戶端」欄位中,選取專案的 Android 用戶端 ID。 (如果找不到您的 Android 用戶端 ID,請確認您已設定遊戲的 Firebase 控制台中的 SHA-1 指紋)。
- 儲存變更。
在「活動」、「成就」和「排行榜」頁面上,建立任一種 要用於遊戲的 Play Games 項資源 (如果不需要 如要立即使用任何圖片,您可以建立預留位置項目)。然後,在 按一下任一個「活動」、「成就」或「排行榜」頁面上的任一頁面,然後按一下 取得資源並將 Android 資源程式碼片段複製到其他位置 非常便利您需要程式碼片段才能設定Google Play Games services 外掛程式。
資源程式碼片段如下列範例所示:
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources> <!-- app_id --> <string name="app_id" translatable="false">123456789000</string> <!-- package_name --> <string name="package_name" translatable="false">com.example.game</string> <!-- event Wiped Raid --> <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string> </resources>
在「測試人員」頁面中,為需要測試的使用者新增電子郵件地址 。 Play Store。
將 Play 遊戲登入程序整合至遊戲
下載最新版本的 Unity 專用 Play 遊戲外掛程式 將模型解壓縮
將外掛程式的 Unity 套件匯入 Unity 專案。您可以在 版本封存檔
current-build
目錄中的 Unity 套件。設定 Play 遊戲外掛程式:
- 按一下 [視窗] > Google Play 遊戲 >設定 >Android 設定,開啟 「Android Configuration」畫面。
- 將從 Play 管理中心取得的 Android 資源程式碼片段貼到 「Resources Definition」欄位中。
- 貼上您在啟用時提供的網路伺服器用戶端 ID Play 遊戲會在 Firebase 控制台登入「用戶端 ID」 ] 欄位。
- 按一下 [設定]。
在您的遊戲中使用
RequestServerAuthCode
設定 Play 遊戲用戶端 設定已啟用:using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; using System.Threading.Tasks; PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .RequestServerAuthCode(false /* Don't force refresh */) .Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate();
當玩家選擇使用 Play 遊戲登入時,呼叫
Social.localUser.Authenticate()
:Social.localUser.Authenticate((bool success) => { // handle success or failure });
透過 Firebase 驗證
為遊戲新增 Play 遊戲登入程序後,即可使用 使用 Play 遊戲服務進行 Firebase 驗證。
玩家成功使用 Play 遊戲登入後,即可登入 接續處理常式,取得玩家帳戶的驗證碼:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
接著,使用 Play 遊戲服務交換驗證碼以供 Firebase 使用 憑證,並使用 Firebase 憑證驗證玩家:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
後續步驟
使用者首次登入後,系統會建立新的使用者帳戶 連結 Google Play 遊戲。這個新帳戶會儲存在您的 Firebase 專案的專用 ID,可用來識別應用程式內所有應用程式的使用者 專案。
在遊戲中,您可以透過
Firebase.Auth.FirebaseUser
物件:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
string playerName = user.DisplayName;
// The user's Id, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server, if you
// have one; use User.TokenAsync() instead.
string uid = user.UserId;
}
在 Firebase 即時資料庫和 Cloud Storage 安全性規則中,您可以
已登入使用者在 auth
變數中的不重複使用者 ID,並使用該 ID 來
控制使用者可以存取哪些資料
如要取得使用者的 Play 遊戲玩家資訊或存取 Play 遊戲服務, 使用 Play 遊戲外掛程式提供的 API
如要將使用者登出,請呼叫 SignOut()
:
auth.SignOut();