跳到主要内容

Android

本文旨在介绍如何设置 Google 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Google 渠道登录。

前提条件​

1. 在 Google Play 管理中心设置您的游戏
注意

对于 IEGG 项目,请联系 [miaruan (Ruan Mingjun)] 进行 Google 应用的注册和配置。

1. 创建 Google 应用

按照提示在 Google Play Console 上注册账号。

说明

Google 收取25美元的服务费。请提前准备好信用卡。

  1. 进入 Google Play Console。
  2. 在 All apps 页面,点击 Create app,创建游戏应用。
    图片:Google - create a game app
  3. 输入应用信息。
    图片:Google - enter information for the app
2. 配置 Play 游戏服务

设置 Play 游戏服务,以管理游戏元数据并自动执行游戏制作和分发任务。

  1. 进入 Google Play Console。
  2. 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Configuration。
  3. 在 Which Play Games Services project do you want to use 下,选择对应的选项来创建 Play 游戏服务项目。 图片:Google service creation
  4. 在 Properties 部分,点击 Edit Properties。
  5. 输入游戏基本信息,然后点击 Save changes。 图片:Google basic game information
3. 添加一个凭证,将 OAuth 2.0 客户端 ID 与游戏连接起来
  1. 进入 Google Cloud Platform。
  2. 在左侧导航栏中,点击 OAuth consent screen。
  3. 按照说明设置 OAuth consent screen。
    图片:Google, consent to the agreement
  4. 在左侧导航栏上点击 Clients。
  5. 在 Clients 页面,选择 CREATE CLIENT > Create OAuth Client ID,创建 OAuth 客户端 ID。
    图片:Google, create OAuth clients
  6. 在 Application type 列表中,点击 Android。
  7. 输入 Package Name 和 SHA-1 Certificate Fingerprint。
    与开发团队确认 Package Name 和 SHA-1 Certificate Fingerprint。Android 的 OAuth 客户端要求用户在 KeyStore 中配置 SHA-1 证书指纹和软件包名称。请确保这两个值正确无误。否则,登录过程将出现异常。
    图片:Google, create an Android client
  8. 点击 SAVE 完成配置。
  9. 进入 Android app 的详细信息页面,查看客户 ID 和客户密文。
  10. 点击 Audience > ADD USERS 添加登录测试用户。
    图片:Google, add test users
4. 添加游戏测试人员
  1. 进入 Google Play Console。
  2. 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Testers。
  3. 在 Testers 选项卡中,点击 Add testers 为您的游戏添加测试人员。
    图片:Google testers
注意

在游戏应用发布之前,只有测试人员可以登录。请确保应用处于测试状态.

5. 配置成就和排行榜

在 Play 游戏服务 菜单下找到 成就 和 排行榜 功能,并根据需要进行配置。

图片:Google leaderboard

6. 获取 Google API ID

从 Google 云端平台 面板访问信息中心。Google API ID 就是此页面上的 Project No.。

图片:Google ID

7. 获取 Client ID 和 Client secret

按照 添加凭证以将 OAuth 2.0 客户端 ID 与游戏链接 中的步骤获取应用信息。

图片:Google Web Client ID and Secret

  1. 获取 Player Network 控制台登录账号。
  2. 为游戏创建新项目,或加入已有项目。
  3. 下载 SDK。
  4. 接入 SDK。
  5. 在 Player Network 控制台添加 Google 为业务的登录鉴权方式。

步骤1:为 Google 登录配置 SDK​

  1. 在 AndroidManifest 文件中,确保添加了所需权限。Google 需要访问网络。
<uses-permission android:name="android.permission.INTERNET"/>
  1. 打开项目的 INTLConfig.ini 文件:
INTLConfig.ini
[INTL environment]
# WARNING: You should change this URL to the production environment when you release your game.
INTL_URL = https://test.intlgame.com
GAME_ID = {INTL_GAME_ID}
SDK_KEY = {INTL_SDK_KEY}
[INTL Log]
LOG_LEVEL = 1
LOG_CONSOLE_OUTPUT_ENABLE = 1
LOG_FILE_OUTPUT_ENABLE = 1
LOG_ENCRYPT_ENABLE = 0
LOG_COMPRESS_ENABLE = 0
[Android LifeCycle]
LIFECYCLE = Google
[Google]
GOOGLE_CLIENT_KEY_ANDROID = {INTL_GOOGLE_CLIENT_KEY}
  • 将 SDK 后端环境设置为 INTL_URL = https://test.intlgame.com。
  • 将 {INTL_GAME_ID} 和 {INTL_SDK_KEY} 替换为 Player Network 控制台 分配的 GAME_ID 和 SDK_KEY 的值。
  • 设置 LOG_LEVEL = 1、LOG_CONSOLE_OUTPUT_ENABLE = 1、LOG_FILE_OUTPUT_ENABLE = 1、LOG_ENCRYPT_ENABLE = 0 和 LOG_COMPRESS_ENABLE = 0,以便在不加密或压缩输出的情况下输出控制台日志和日志文件。
  • 在 LIFECYCLE 中添加 Google。有关更多信息,请参见 SDK 环境。
  • 将 {INTL_GOOGLE_CLIENT_KEY} 替换为 Web 客户端密钥。
    这是 API OAuth 配置过程中 Credentials 部分中网络应用的客户端 ID,在 API OAuth 2.5 配置过程中也称为 Server Client ID。
  1. 在 gradle 文件中定义 manifestPlaceholders,将 {INTL_GOOGLE_APP_ID} 替换为 Google App ID。

    mainTemplate.gradle
    android {
    defaultConfig {
    manifestPlaceholders = ["GOOGLE_APPID":"{INTL_GOOGLE_APP_ID}"]
    }
    }

步骤2:添加 Google 登录​

所有 Google 操作都需要连接到 Google 服务。

自动登录 (AuthLogin)​

在自动登录期间,设备可能无法连接到 Google 服务。因此推荐在默认情况下,让 Player Network SDK 在自动登录时连接 Google 服务。(游戏团队可在 INTLConfig 配置文件的 Google渠道配置 部分配置配置 GOOGLE_LOGOUT_NEED_CONNECT 字段来禁止此连接。)

登录​

在调用 Google 登录之前,Player Network SDK 将检查 Google 移动服务(GMS)是否可用。只有当 GMS 可用时,才能调用登录服务。如果 GMS 不可用,Player Network SDK 将通过 INTLAuthResult 的 ThirdCode 字段向游戏返回 Google 发送的错误代码。

返回代码返回值错误描述
SERVICE_MISSING1设备上的 GMS 不可用。
SERVICE_VERSION_UPDATE_REQUIRED2已安装的 GMS 版本已过期。
SERVICE_DISABLED3GMS 已禁用。
SERVICE_INVALID9安装的 GMS 版本不正确。
SERVICE_UPDATING18设备上的 GMS 正在更新。

更多信息,请参见 Google Docs 和 Google 常见问题

  1. 注册登录相关回调。

    // Add callbacks
    public void AddAuthObserver()
    {
    INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
    }

    // Remove callbacks
    public void RemoveAuthObserver()
    {
    INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
    }

    // Process the INTLAuthResult callback
    public void OnAuthResultEvent(INTLAuthResult ret)
    {
    Debug.Log($"MethodID: {ret.MethodId}");

    string methodTag = "";
    if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
    {
    methodTag = "Login";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
    {
    methodTag = "Bind";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
    {
    methodTag = "AutoLogin";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
    {
    methodTag = "QueryUserInfo";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
    {
    methodTag = "GetAuthResult";
    }
    }
  2. 调用 AutoLogin 接口自动登录。

    INTLAPI.AutoLogin();
  3. 在自动登录失败时调用 Login 接口使玩家手动登录。

    INTLAPI.Login(INTLChannel.Google); 
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

[可选] 设置 email 权限​

要在 Google 登录时获取玩家邮箱需先设置对应权限,开启后将在 AuthResult 的 ChannelInfo 中返回 email。

  • 基于合规考虑,可针对特定来源对返回的 email 做 mask 处理,如有需求请联系 Player Network 助手打开。
  • 可在后台流水日志中上报 hash 后的 base64(sha256(email)),如有需求请联系 Player Network 助手打开。
  • 可用于验证玩家信息或绑定列表是否包含 email 信息,如有需求请联系 Player Network 助手打开。

在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。

步骤3:验收登录功能​

在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。

如果接入过程中遇到问题,请参见 常见问题。

步骤4:发布游戏​

在准备发布正式版本之前,请使用 Android App Bundle 创建一个测试版本。

发布 Beta 版的好处是用户可以从 Google play 下载,但没有添加评论的权限。为用户提交反馈设置了特定的渠道。

创建正式发布版本
  1. 进入 Google Play Console。

  2. 在左侧导航栏中,选择 Release > Production。

    Figure: Select corresponding channel

  3. 按照说明创建生产版本。

图片:Google beta testing

更改发布状态
警告

如果用户不释放应用,验证可能会失败。

  1. 进入 Google 云端平台 的 OAuth 同意界面页面。
  2. 将 Publishing status 更改为 PUBLISH APP。

图片:Google app release

使用 APK 测试谷歌登录

更多信息,请参见 使用 APK 测试谷歌登录。

使用 Google Play Games Services 同步登录态​

如果游戏需要接入 Google Play 游戏电脑版(Google PC 模拟器),则推荐使用 Google Play Games Services(GooglePGS)来将 Android 设备上的游戏登录态同步到 Google PC 模拟器中。

使用 GooglePGS 同步登录态,需要在接入 INTLGoogle 的前提下接入 INTLGooglePGS。

步骤1:为 GooglePGS 配置 SDK​

  1. 在项目的 INTLConfig.ini 文件中,添加以下配置:

    INTLConfig.ini
    [Android LifeCycle]
    LIFECYCLE = GooglePGS
    [GooglePGS]
    GOOGLEPGS_SERVER_PROJECT_ID = {INTL_GOOGLEPGS_SERVER_PROJECT_ID}
    GOOGLEPGS_ENABLE_PGS = 1
    • 将 {INTL_GOOGLEPGS_SERVER_PROJECT_ID} 替换为 Web 客户端密钥。
      这是 API OAuth 配置过程中 Credentials 部分中网络应用的客户端 ID,在 API OAuth 2.5 配置过程中也称为 server client ID。
    • GOOGLEPGS_ENABLE_PGS 表示 SDK 是否启用 GooglePGS 来同步登录态到 Google PC 模拟器,GOOGLEPGS_ENABLE_PGS = 1 则为启用。
  2. gradle 文件中定义 manifestPlaceholders,将 {INTL_GOOGLEPGS_APP_ID} 替换为 Google App ID。

    mainTemplate.gradle
    android {
    defaultConfig {
    manifestPlaceholders = ["GOOGLEPGS_APPID":"{INTL_GOOGLEPGS_APP_ID}"]
    }
    }

步骤2:在 Google PC 模拟器上,使用 AutoLogin 获取登录态​

完成上述步骤之后,即可通过 GooglePGS 将 Android 设备上的登录态同步到 Google PC 模拟器上。Android 设备与 Google PC 模拟器需要登录同一个 Google 账号。

INTLAPI.AutoLogin();