Play 遊戲服務登入程序可以為您提供玩家的遊戲身分,這是 Android 使用者的平台層級遊戲專屬身分。這個身分可以協助在玩家和遊戲之間建立關係。比起其他中央系統,玩家更願意使用這個身分登入。
另外,登入程序可以給您一組高強度且一致的 ID,您可以把這組 ID 當做使用雲端儲存系統的金鑰。雲端儲存非常具有價值,可以讓玩家達成以下目標:
- 即使變更或重設裝置,依然可以接續遊戲進度
- 在多部裝置上玩遊戲 (例如用其他手機或 Chromebook 玩遊戲)
- 解除安裝遊戲後再重新安裝
您可以使用 Play 遊戲服務身分做為自己的雲端儲存解決方案金鑰,也可以使用免費的遊戲進度存檔服務。
Play 遊戲服務 (PGS) 支援自動登入功能,這是一種零摩擦的玩家登入方式,以及手動登入功能,這是一種一鍵式程序。本文件將說明這些不同的登入方式。
建議登入流程
為了讓玩家成功登入遊戲,請使用以下登入流程:
- 在遊戲的啟動序列中,試用自動登入功能,讓玩家自動登入。
- 如果自動登入功能無法運作,且使用者的裝置已連上網路,請嘗試手動登入。
- 如果使用者拒絕手動登入,請記住使用者的選擇,並不要再次顯示手動登入按鈕,但請繼續嘗試在啟動時自動登入。
此外,您應確保使用者能夠透過專屬的按鈕登入遊戲,並使用 Play 遊戲服務帳戶登入遊戲。
自動登入
自動登入可讓使用者無縫登入遊戲,完全不必費心操作。如果您的遊戲會要求使用者登入,並已啟用自動登入設定 (在 Google Play 遊戲應用程式中),便會收到使用者的 PGS 身分憑證,使用者則會看到 PGS 的登入體驗。
自動登入是使用者可以自行控制的設定。使用者可以選擇自動登入所有遊戲,或每次登入都詢問一次。
手動登入
如果使用者沒有自動登入遊戲,您可以請他們手動登入。使用者只要按一下遊戲頂端顯示的對話方塊,即可登入。
允許 PGS 彈出式視窗,以便提供正確的登入體驗
使用 PGS 時,使用者必須知道自己已登入。方法是顯示 PGS 登入體驗。
如要顯示登入體驗,請在遊戲啟動期間呼叫 GamesClient
類別的 setViewForPopups()
方法。這對於提供正確的使用者體驗至關重要。
OAuth 範圍和 PGS
PGS 需要使用 OAuth 系統,才能讓使用者授予遊戲取得對方帳戶的存取權。OAuth 範圍是開發人員可要求的權限。如果使用者授予這些權限,遊戲就能代表使用者呼叫特定 API,並存取使用者 Google 帳戶的特定部分。
PGS 有獨特的遊戲範圍 (games-lite
),而如果遊戲有使用遊戲進度存檔功能,則需要使用其他範圍 (drive.appdata
)。遊戲進度存檔功能可以授予儲存遊戲資料的使用者 Google 雲端硬碟帳戶的存取權。
遊戲可以要求任何範圍,以便為使用者打造絕佳的遊戲體驗。遊戲可以在一個套件中要求所需的所有權限範圍,藉此限制 Google 帳戶存取權要求的數量。不過,這種做法有一個重大缺點。如果您要求的範圍超出 PGS 專屬範圍,自動登入作業就無法成功。自動登入是讓玩家登入遊戲的最佳方式。
最佳做法是使用漸進式範圍要求。遊戲在初始要求中應先要求僅限 PGS 的範圍,並在更相關的時機單獨要求其他範圍。
系統會針對每個範圍使用不同的畫面授予 OAuth 存取權。這讓使用者能精細決定存取權範圍。只要使用僅含 PGS 範圍的自動登入功能,使用者就不會需要與任何 OAuth 提示互動,可減少登入時的阻礙。
支援多種登入方法
PGS 可為 Android 玩家提供遊戲身分,但這不一定是使用者唯一可以使用的身分。您可以同時使用 PGS、社群網路 ID 以及您自己的遊戲內部 ID 系統登入玩家。每種系統都可以為您和玩家提供專用值,並可以同時使用,藉此為 Android 玩家提供良好的使用體驗。
安全擷取並驗證玩家身分,以便進行後端整合
您可以要求伺服器驗證碼,以便在取得登入玩家的授權之後,讓伺服器透過 REST API 直接和 Play 遊戲服務伺服器通訊。這樣做即可直接存取玩家的 ID、個人資料以及其他資訊 (如經過授權的好友名單)。如果您會在後端儲存任何玩家 ID、好友 ID 或其他相關資料,就必須使用此方法,避免裝置端操控這些欄位。
另外,若是較舊的遊戲和較資深的玩家,Android SDK 傳回的玩家 ID,可能會與其他玩家在遊戲中看到的該名玩家 ID 不同,這在使用好友名單的情況下尤其明顯。不過,REST API 內部回傳的 player_id
一定可以保持一致,而且一律會是其他玩家會看到的 ID。
用戶端實作
如果想瞭解如何在 Android 實作登入支援,請參閱「Android 遊戲登入」。