Unity 嵌入 Google Play 遊戲服務 (2)

接續上一篇完成前置動作後, 我們有了 Google 開發者帳號, 建立了平台應用程式, 也再 Unity 專案中設定好 Android 平台參數, 生成 Keystore. 本篇可以開始串接 Google Play 遊戲服務了(終於

嘗試的過程稍微繁瑣, 尤其更換成新版 Google Play Console 介面後又跟以前的教程對不上. 但大同小異, 多試幾次就知道坑了.

本篇關注在申請 Google play 遊戲服務上面, 下一篇才會到 Unity 專案裡做測試. 另外, 不清楚前置作業內容的, 可以回到上篇確認一下囉~

Google Play Console 添加遊戲服務

進入 Google Play Console, 選擇指定的應用程式 (My Flappy Fly), 再選 Play 遊戲服務 (Play Games Services) > 設定與管理 (Setup and management) > 設定 (Configuration).

第一次設置應用程式的遊戲服務會看到… 詢問是否已經有使用任何 Google APIs? 目前 Google APIs 服務由 Google Cloud Platform 的專案管理, 除了 Game Service 還有 Cloud 機器, 翻譯 API, Map API…等.

如果已經在 GCP 創建過專案或啟用 APIs, 可以選擇第一項連結 Console 應用程式 GCP 專案. 如果沒有 GCP 專案可以選擇第二項, 自動使用當前 Google 帳號創建 GCP 專案與遊戲服務. 設定好 Game Service Name 就創建吧~

可以看到成功創建 “My Flappy Fly" 的 GCP 專案, 點擊右上角 “Google Platform 中查看" (View in Google Cloud Platform) 會轉跳至 GCP API服務頁面.

資訊主頁 (Dashboard) 顯示當前啟用的服務項目與服務使用的流量, 錯誤率, 和延遲狀況. 之後要新增其他 API 功能可以選上方 “ENABLE APIS AND SERVICES".

Google Cloud Platform 添加授權同意畫面

Google API 提供給第三方應用程式的某些服務 (像 Play 遊戲服務) 是需要使用者授權 (像存取特定 Google 帳戶資料), 因此 Google 要求開發者要以通過 Oauth 2.0 認證的方式.

開發者必須提供使用者 (End User) 授權同意畫面, 當使用者同意授權後, 第三方應用程式 (也可以稱作 OAuth 用戶端) 向 Google 認證伺服器 (Google Cloud Platform, 應該是吧我猜xd) 索取 Token, 成功後, 第三方應用程式就能使用 Token 向資源伺服器 (Google 帳戶管理) 索取資源.

選擇授權 (Credentials) 頁面提示要為應用程式提供 OAuth 同意畫面. 先來創建同意畫面 (CONSENT SCREEN).

使用者類型 (User Type) 選擇外部 (External) 允許任何擁有 Google 帳號的使用者.

輸入些必要資料 (像應用程式名稱, 聯絡/反應信箱…), 可以先填後來再修改.

接著要設定授權同意的範圍 (Scope), 告訴使用者使用此應用程式會索取哪些資訊/權限. 這次只是使用 Google Play Game Services 中的登入與排行紀錄, 勾選2項即可.

額外提供應用程式的說明, 以加速 Google 內部審核. 由於是第一個應用程式也沒甚麼好提供其他的, 所以繼續.

最後一頁確認內容後回到 OAuth 同意畫面. 審核還未通過, 所以還無法使用授權範圍的功能, 但使用者會看到同意畫面. 後面設定 OAuth 用戶端時會額外建立一個 Web 應用程式讓 Google 審核通過 (偷吃步:D, 但也只能用於測試未上架的應用程式).

Google Cloud Platform 添加 Android OAuth 用戶端的授權憑證

回到授權 (Credentials) > CREATE CREDENTIALS

應用程式類型: Android
OAuth名稱: [自己取] (開發者用來辨識用的, 使用者看不到)
套件名稱: [完整 PackageName] (參考前一篇取得 PackageName)

目前還少了 SHA-1 憑證指紋 (SHA-1 certificate fingerprint), 需要用到前一篇創建的 Keystore 與 Key 別名產生.

因為需要 KeyTool, 在 Windows 環境下安裝 Java 並設定成環境變數後開啟命令提示字元, 將目錄切換至 Keystore 位置, 輸入指令:

keytool -exportcert -list -v -alias [別名] -keystore [檔名.keystore]

輸入完密碼後, 憑證指紋欄位找到我們要的 SHA1, 複製貼上到上個步驟頁面的 SHA-1 憑證指紋欄位.

這樣就建立好一個 Android 應用程式的 OAuth 用戶端憑證. 另外我們還需要建立另一個 Web 應用程式的 OAuth 用戶端憑證, 好讓 Google 審核通過 (讓我測試阿~).

Google Cloud Platform 添加 Web application OAuth 用戶端授權憑證

同樣創建授權, 類型選擇 “網頁應用程式" (Web application), Url 輸入 https://localhost 即可.

創建~! 紀錄 Web application 憑證連結的 OAuth Client ID, 後面 Unity 專案中會用到.

目前只建立完授權憑證, 接著讓我們的第三方應用程式 (My Flappy Fly) 能夠向 Google Cloud 平台索取憑證. 回到 Google Play Console 添加 Android 憑證連結.

Google Play Console 添加 Android 憑證連結

Google Play Console > Play 遊戲服務 (Play Games Services) >設定與管理 (Setup and management) > 設定 (Configuration)

中間右方 “新增憑證" (Add credential)

類型 (Type): Android
名稱 (Name): [憑證名稱] (玩家會看到)
啟用反盜版 (Enable anti-piracy): 關閉 (打開的話, 只有從 Google Play 下載的應用程式能使用 Play 遊戲服務, 之後還能調整)

授權 (Authorization) > OAuth 用戶端 (client) 選擇剛才創建的 Android OAuth 用戶端的名稱 (MyFlappy Fly), 這個下拉選單只會顯示 Android 類型的 OAuth 用戶端, 很防呆!

授權到此設定完畢! 來建立排行榜吧!

Google Play Console 建立排行榜

Play 遊戲服務 (Play Games Services) >設定與管理 (Setup and management) > 排行榜 (Leaderboards)

簡單設定一下排行榜名稱 (Name), 資料格式 (Format), 排序 (Sort)等…

儲存後, 回到排行榜頁右上角 > 取得資源 (Get resources), 我們需要取得 resource xml 嵌入 AndroidManifest.xml 中. 將整個字串內容記錄下來, 後面 Unity 專案中會用到.

PS. package_name 欄位不知道為什麼空了, 完整字串添加到 Unity 時要記得手動補上.

總結

以上步驟不完全了解沒關係 (我也是邊弄邊矇逼…), 但是要確定能拿到 2 項重要的資料:

  1. Android 資源字串 (xml格式)
  2. Web 應用程式用的 OAuth Client ID (用於快速通過 Google 授權審核, 便於測試)

下一篇我們會用到 Google Play Games plugin for Unity 插件, 只需要設定資源字串與 Web Client ID 就能使用 Google Play 遊戲服務的APIs.

同系列文章:

  1. Unity 嵌入 Google Play 遊戲服務 (1)
  2. Unity 嵌入 Google Play 遊戲服務 (2)
  3. Unity 嵌入 Google Play 遊戲服務 (3)

希望能幫到更多在這議題上困擾的人, 如有任何疑慮錯誤, 也歡迎在下方留言~

在〈Unity 嵌入 Google Play 遊戲服務 (2)〉中有 3 則留言

  1. m 的大頭貼 m 2021-03-07 / 22:34:45

    你好,我照著你的方式做,為什麼只能用開發者的google帳號登入google play?

發表留言