Android
本文旨在介绍如何设置 Google 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Google 渠道登录。
前提条件
1. 在 Google Play 管理中心设置您的游戏
对于 IEGG 项目,请联系 [miaruan (Ruan Mingjun)] 进行 Google 应用的注册和配置。
1. 创建 Google 应用
按照提示在 Google Play Console 上注册账号。
Google 收取25美元的服务费。请提前准备好信用卡。
- 进入 Google Play Console。
- 在 All apps 页面,点击 Create app,创建游戏应用。

- 输入应用信息。

2. 配置 Play 游戏服务
设置 Play 游戏服务,以管理游戏元数据并自动执行游戏制作和分发任务。
- 进入 Google Play Console。
- 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Configuration。
- 在 Which Play Games Services project do you want to use 下,选择对应的选项来创建 Play 游戏服务项目。

- 在 Properties 部分,点击 Edit Properties。
- 输入游戏基本信息,然后点击 Save changes。

3. 配置 Google OAuth 客户端
Google 登录需要同时创建 Android Client ID 和 Web Client ID,两者用途不同:
- Android Client ID:用于 Google Sign-In 校验 Android 应用的包名和签名。该 Client ID 无需配置到 AndroidManifest.xml 或 INTLConfig.ini,但必须在 Google Cloud Console 中创建。
- Web Client ID:用于 Player Network SDK 进行 Google Server Access 鉴权。INTLConfig.ini 以及 Player Network 控制台 中配置的 Google Client ID 均使用 Web Client ID。
下面分成三个步骤:
3.1 获取应用签名证书 SHA-1
-
登录 Google Play Console,并选择对应应用。
-
在左侧导航栏中,前往 Protected with Play > Play Store protection > Protect app signing key,点击 Manage Play app signing

-
在 App signing key 区域复制对应的 SHA-1 certificate fingerprint。该签名用于创建或配置 Google Android OAuth Client ID,以验证实际发布到用户设备上的 Android 应用。

3.2 创建 Android OAuth Client ID
在创建 Android OAuth Client ID 前,请在 Google Cloud Platform 的 Clients 页面,确认是否已经存在与当前应用包名和签名对应的 Android Client ID,如果已存在,无需重复创建。
如果不存在,请按照以下步骤创建:
-
前往 Google Cloud Platform ,并选择与游戏对应的 Google Cloud Project。
-
在左侧导航栏中,点击 OAuth consent screen。
-
在左侧导航栏上点击 Clients。
-
在 Clients 页面,选择 Create Client > Application type 列表中,选择 Android 应用。

-
填写以下信息:
- Package name:填写最终 Android 应用使用的包名 Package Name。
- SHA-1 certificate fingerprint:填写或粘贴在步骤 3.1 获取的应用签名证书 SHA-1。
-
点击 Create 完成配置。
如果应用包名或签名证书发生变化,或者存在多个渠道包,请为每个实际使用的应用包名和签名证书 SHA-1 组合创建对应的 Android OAuth Client ID。
3.3 创建 Web Client ID 并配置 Player Network
-
在 Application type 列表中,选择 Web application。
-
输入客户端名称,并在 Authorized redirect URIs 中添加:
https://test-common-web.intlgame.com/jssdk/googlelogincallback.htmlhttps://common-web.intlgame.com/jssdk/googlelogincallback.html

-
点击 CREATE 完成配置。
-
获取生成的 Web Client ID 和 Client Secret。

-
前往 Player Network 控制台 的 Google 三方渠道配置:
- Client ID:填写 Google Cloud Platform 中生成的 Web Client ID。
- Client Secret:填写对应的 Client Secret。
-
在 INTLConfig.ini 中的
{INTL_GOOGLE_CLIENT_KEY_ANDROID},同样替换成 Web Client ID。
4. 添加游戏测试人员
- 进入 Google Play Console。
- 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Testers。
- 在 Testers 选项卡中,点击 Add testers 为您的游戏添加测试人员。

在游戏应用发布之前,只有测试人员可以登录。请确保应用处于测试状态.
5. 配置成就和排行榜
在 Play 游戏服务 菜单下找到 成就 和 排行榜 功能,并根据需要进行配置。

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

7. 获取 Client ID 和 Client secret
按照3. 添加一个凭证,将 OAuth 2.0 客户端 ID 与游戏连接起来中的步骤获取应用信息。

- 获取 Player Network 控制台登录账号。
- 为游戏创建新项目,或加入已有项目。
- 下载 SDK。
- 接入 SDK。
- 在 Player Network 控制台添加 Google 为业务的登录鉴权方式。
步骤1:为 Google 登录配置 SDK
- 在
AndroidManifest文件中,确保添加了所需权限。Google 需要访问网络。
<uses-permission android:name="android.permission.INTERNET"/>
- 打开项目的 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_ANDROID}
- 将 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_ANDROID}替换为 Web 客户端 ID。用于拉起 Android Google 登录,以及后台 Server Auth。
这是 API OAuth 配置过程中 Credentials 部分中网络应用的客户端 ID,在 API OAuth 2.5 配置过程中也称为 Server Client ID。
- 在 gradle 文件中定义
manifestPlaceholders,将{INTL_GOOGLE_APP_ID}替换为 Google App ID。
- Unity
- Unreal Engine
android {
defaultConfig {
manifestPlaceholders = ["GOOGLE_APPID":"{INTL_GOOGLE_APP_ID}"]
}
}
对于 Player Network SDK V1.17 及更高版本,请编辑 INTLConfig_APL.xml。
对于 Player Network SDK V1.16.04 及更早版本,请编辑 INTLCore_UPL.xml。
<buildGradleAdditions>
<insert>
<![CDATA[
android{
defaultConfig {
manifestPlaceholders = ["GOOGLE_APPID":"{INTL_GOOGLE_APP_ID}"]
}
}]]>
</insert>
</buildGradleAdditions>
步骤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_MISSING | 1 | 设备上的 GMS 不可用。 |
| SERVICE_VERSION_UPDATE_REQUIRED | 2 | 已安装的 GMS 版本已过期。 |
| SERVICE_DISABLED | 3 | GMS 已禁用。 |
| SERVICE_INVALID | 9 | 安装的 GMS 版本不正确。 |
| SERVICE_UPDATING | 18 | 设备上的 GMS 正在更新。 |
更多信息,请参见 Google Docs 和 Google 常见问题
- 注册登录相关回调。
- Unity
- Unreal Engine
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}
// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}
// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult AuthResult)
{
Debug.Log($"MethodID: {AuthResult.MethodId}");
string methodTag = "";
switch (AuthResult.MethodId)
{
case (int)INTLMethodID.INTL_AUTH_LOGIN:
methodTag = "Login";
break;
case (int)INTLMethodID.INTL_AUTH_BIND:
methodTag = "Bind";
break;
case (int)INTLMethodID.INTL_AUTH_AUTOLOGIN:
methodTag = "AutoLogin";
break;
case (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO:
methodTag = "QueryUserInfo";
break;
case (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT:
methodTag = "GetAuthResult";
break;
}
}
C++ Event Handling (above v1.15)
//configure callback
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
// Remove callbacks
UINTLSDKAPI::GetAuthResultObserver().Clear();
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}
Unreal Event Handling
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}
- 调用
AutoLogin接口自动登录。
- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
- 在自动登录失败时调用
Login接口使玩家手动登录。
- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Google);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGoogle);
- 与游戏后台同步客户端身份验证状态,等待最终验证结果。
[可选] 设置 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 下载,但没有添加评论的权限。为用户提交反馈设置了特定的渠道。
创建正式发布版本
-
在左侧导航栏中,选择 Release > Production。

-
按照说明创建生产版本。

更改发布状态
使用 APK 测试谷歌登录
更多信息,请参见 使用 APK 测试谷歌登录。
