Windows
本文旨在介绍如何设置 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 游戏服务
- 进入 Google Play Console。
- 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Configuration。
- 在 Which Play Games Services project do you want to use 下,选择对应的选项来创建 Play 游戏服务项目。
4. 在 Properties 部分,点击 Edit Properties。
5. 输入游戏基本信息,然后点击 Save changes。
3. 添加一个凭证,将 OAuth 2.0 客户端 ID 与游戏连接起
- 进入 Google Cloud Platform。
- 在左侧导航栏中,点击 OAuth consent screen。
- 按照说明设置 OAuth OAuth consent screen。
- 在左侧导航栏上点击 Clients。
- 在 Clients 页面,选择 CREATE CLIENT > Create OAuth Client ID,创建 OAuth 客户端 ID。
6. 在 Application type 列表中,点击 Web应用。
7. 输入所需信息。
在 Web Application 详细信息页的授权重定向部分中,添加 https://test-common-web.intlgame.com/jssdk/googlelogincallback.html
和 https://common-web.intlgame.com/jssdk/googlelogincallback.html
.
8. 点击 SAVE 完成配置。
9. 转到 Web 应用程序的详细信息页面。
10. 找到客户 ID 和客户密文,并将其输入 Player Network 控制台的游戏配置中。
- 点击 Audience > ADD USERS 添加登录测试用户。
4. 添加游戏测试人员
- 进入 Google Play Console。
- 在左侧导航栏中,选择 Grow users > Play Games Services > Setup and management > Testers。
- 在 Testers 选项卡中,点击 Add testers 为您的游戏添加测试人员。
在游戏应用程序发布之前,只有测试人员可以登录。请确保应用程序处于测试状态.
5. 配置成就和排行榜
在 Gaming Services 画面中找到"成就"和"排行榜"功能,并根据需要进行配置。
6. 获取 Google API ID
从 Google云端平台 面板访问信息中心。Google API ID 就是此页面上的 Project No.。
7. 获取 Client ID 和 Client secret
按照 添加凭证以将 OAuth 2.0 客户端 ID 与游戏链接 中的步骤获取应用程序信息。
- 获取 Player Network 控制台登录账号。
- 为游戏创建新项目,或加入已有项目。
- 下载 SDK。
- 接入 SDK。
- 在 Player Network 控制台添加 Google 为业务的登录鉴权方式。
步骤1:为 Google 登录配置 SDK
- 打开项目的 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
[Google Channel Configuration]
GOOGLE_WEBVIEW_LOGIN_ENABLE = 0
GOOGLE_CLIENT_REDIRECT_URL = {INTL_GOOGLE_CLIENT_REDIRECT_URL}
- 将 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
,以便在不加密或压缩输出的情况下输出控制台日志和日志文件。 - 将
GOOGLE_WEBVIEW_LOGIN_ENABLE
设置为 0,以便在 Windows 上使用系统浏览器登录 Google。 - 将
{INTL_GOOGLE_CLIENT_REDIRECT_URL}
替换为 Web 客户端密钥。,为 API OAuth 配置过程中 Credentials 部分中网络应用程序的客户端 ID,在 API OAuth 2.5 配置过程中也称为 Server Client ID。
步骤2:添加 Google 登录
使用浏览器登录使用环回 IP 地址向系统返回数据。由于数据不会离开系统,也无需通过 Windows 防火墙,因此无需配置 Windows 防火墙。
Windows 平台的游戏如果需要玩家通过 Google 登录,需要打开 Google 登录网页。开发人员可以通过以下两种方式打开 Web 客户端进行登录:
- 若需使用 Player Network SDK 内置的 WebView 打开 Google 登录页面,需在调用登录 API 时将
extraJson
设置为"webview_login":true
。 - 若需使用系统浏览器打开 Google 登录页面,需在调用登录 API 时将
extraJson
设置为"webview_login":false
。
除此之外,开发人员还可以通过在 INTLConfig
配置文件中的 GOOGLE_WEBVIEW_LOGIN_ENABLE
值配置打开 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 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";
}
}