FAQ
如果遇到任何本文未列出的问题,请联系业务接口人。
LEVEL INFINITE PASS
客户端
升级到 LI PASS 会导致原有玩家账号丢失或其他登录 问题吗?
不会。登录 LI PASS 时会验证该电子邮件是否已在自定义账号中注册。LI PASS 会自动创建新的 OpenID 或迁移旧的 OpenID。它还支持回滚到原始账号服务,以避免账号丢失。
升级到 LI PASS 后,是否会让玩家感到困惑并导致用户流失?
玩家会得到清晰的提示,而将体验的波动降至最低。
是否有新的阶段或步骤(如再次进行年龄验证)导致用户流失?
没有新增阶段。LI PASS 包含一整套用户界面交互,包括账号注册、登录和合规服务。它保证了品牌概念的一致性,降低了游戏开发和集成的成本。合规服务支持未成年人年龄验证和跨游戏验证的状态迁移,减少了因重复年龄验证和实名验证过程而造成的玩家流失。
LI PASS 玩家(来自其他游戏)是如何被您的游戏吸引的?是否存在合规风险或声誉风险?
游戏通过 SmartLink 向 LI PASS 玩家发送营销电子邮件,或占用 LI PASS 网站营销资源来推广游戏和引导下载。LI PASS 隐私协议必须说明如何使用玩家数据,法律团队必须批准隐私协议,以避免合规风险和声誉风险。
INTLConfig.ini
是否支持为服务 条款和隐私协议配置多语言 URL?
不,INTLConfig.ini
不支持多语言,请在对应的 HTML5 页面自行配置。
如何修改 LI PASS 的国家/地区列表?
通过下列步骤修改 LI PASS V1.06 及之前版本的国家/地区列表。V1.07 及之后的版本,请参见 UpdateCountryList 接口。
- Unity
- Unreal Engine
- 联系 Player Network 接口人提单修改国家/地区列表。
- 利用研发提供的
AssetBundle
文件来覆盖替换目录{Project}\Assets\StreamingAssets\INTLGameNative\
下的AssetBundle
文件。
-
手动删除以下跟 LUA 文件同名的 32-bit 和 64-bit LUAC 文件。
{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate\Region32.luac
{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate\Region64.luac
-
在原 LUAC 文件位置
{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate
放入Region.lua
。
在 Unity 导入 LI PASS 后发生编译错误如何解决?
错误信息参考:
Assets\LevelInfinite\Scripts\INTLGameNative\Scripts\LuaObject\Unity\INTLLua_UnityEngine_SystemInfo.cs(1836,16): error CS0619: 'SystemInfo.supportsGPUFence' is obsolete: 'SystemInfo.supportsGPUFence has been deprecated, use SystemInfo.supportsGraphicsFence instead (UnityUpgradable) -> supportsGraphicsFence'
这是因为 sLua 生成的 LuaObject 代码跟当前引擎版本不匹配,需要重新生成 LuaObject。在 Unity 菜单栏,选择 INTLLua > All > Clear > Make 即可,详见 导入 LevelInfinite 插件。
LI PASS 是否支持合规程序的定制?
支持自定义第三方渠道的合规程序,但不支持自定义 LI PASS 合规程序。
LI PASS 关闭热更后,业务该如何清除旧资源来加载本地资源?
移动端业务需提示玩家卸载重装,PC 端则需清理 Player Network SDK 缓存目录。
如果游戏没有调用 SetDefaultUserStorage
接口,PC 端 Player Network SDK 缓存数据的默认路径为 %ProgramData%\INTL\{game id}\{application name}\
。例如 game id 为 11,application name(游戏应用名称)为 INTLSDKDemo 时,缓存数据将保存在 %ProgramData%\INTL\11\INTLSDKDemo
。
更多信息,请参见 SetDefaultUserStorage 接口。
SetRewardExtraJson
接口入参解析失败,SDK 对入参是否有兼容?
SDK 层对入参不传值或者 ""
的场景做了兼容,但需业务自行添加标准的 JSON 格式校验。接口入参非标准的 JSON 格式,会导致 SDK 解析失败。
Windows 平台 LI PASS 密码登录时,语言会自动切换为中文。输入字母后再输入数字时,密码会回退并清除前面字符。
因系统设置中的输入法语言切换为中文导致,非 Player Network SDK 组件问题。密码输入框文本发生变化时,会把文本中除字母数字和支持的符号以外的字符剔除掉。
把系统设置中 的默认输入法语言切换为英文即可。
使用 Player Network 控制台云控功能下发配置,客户端何时生效?
云控功能无法保证一定可以下发到每个玩家,这取决于玩家当前的网络质量。
例如,玩家首次在 iOS 安装游戏时会需要授权网络,而在未经玩家授权的情况下,下发往往不会成功。玩家授权网络后,后续每次启动客户端时都会进行云控拉取,并在下次启动生效。
针对有多渠道包配置的业务,建议在打包时就配置好不同渠道的信息,避免 Player Network 控制台下发生效时机导致的更新不及时等问题。
游戏启动报错 GameNative sdk get config failed!, ret:1006, msg:gameid not valid!
第一次接入 LI PASS 需要开通 GameNative 权限,请联系 Player Network 助手开通。
Windows 在 Unreal Engine 导入 LI PASS 后,调用 ULevelInfiniteAPI::OpenLoginPanel
时在 Editor 触发报错。
错误信息参考:
[UE]: INTLGameNative::Lua error: ...elInfinite\Lua\Lua_unreal\AuthWindow\AuthWindowPanel.lua:565: attempt to index a nil value (field 'TextBlock_SendCodeButtonText')
Windows 程序退出时候 LI PASS 主动调用 CloseLI
,但是无法在 Editor 里触发,所以需要在初始化 Editor 模式前调用 CloseLI
,清理上次运行的 Lua 虚拟机残留数据。
"ret":1018,"msg":"sigkey not found"
因为 INTLConfig.ini 配置文件中的 INTL_URL
和 ACCOUNT_URL
环境信息不一致所导致。修改 INTLConfig.ini
配置文件后,如仍然未生效,建议删除 LOG 路径下的下列缓存文件:
- ApasRemoteConfig
- IntlCustomConfig.tmp
- IntlRemoteConfig
- LipassRemoteConfig
如何禁用 LI PASS 用到的 LuaProfiler
性能检测工具?
-
把
LevelInfinite.uplugin
文件里LISluaProfile
的内容删除后,LuaProfiler
不再运行
-
删除对应
LuaProfiler
代码的文件夹
调用 INTLAPI.SetAuthEncryptData
在调试模式下启动游戏导致 Unity 崩溃。
在初始化 LI PASS 之前需要先初始化 Player Network SDK。
LI PASS 登录闪退报错"backtrace:intl::SecurityCheckUtil"
在 INTLConfig.ini
文件中添加配置开关 SECURITY_FLAG = 0
即可。更多信息,请参见 Player Network SDK 上报
构建报错:Assets\Levellnfinite\Runtime\/NTLGameNative\Scripts\LuaObject\Unity\INTLLua_UnityEngine_Application.cs(529,28):error CS0117:'Application'does not contain a definition for ’Setll2cppMonitorAlloc‘
确保生成 LuaObject 时候的 Unity 版本与打包时候的版本一致。
在 Unity 中生成 LuaObject 时出现"FileNotFoundException: Could not load the file 'Assembly-CSharp-Editor"
由于程序集尚未编译,LI PASS 找不到 Editor 文件夹所导致,一般在新建或没有内容的工程中出现。
手动创建一个 Editor 文件夹,并在其中添加一个空白脚本即可。
Web 端
LI PASS Web 组件界面位置显示问题
可以把 renderMode
参数调整为 modal
模态框模式,请参见 Config 说明。
Web 组件第三方渠道登录时,绑定 LI PASS 弹窗没有显示快捷绑定邮箱
绑定时是否进入快速绑定流程将由渠道和玩家账号的状态来判断:
- 该业务是否开启了该渠道获取邮箱的能力(业务是否有授权)
- 能否从该渠道获取到玩家邮箱(玩家是否有授权)
- 获取到的邮箱,是否注册过 LI PASS,是否有该游戏的 OpenID(能否绑定)
只有满足以上所有条件才会进入快速绑定流程,否则会让玩家手动输入邮箱。
登录鉴权
登录失败的常见问题
账号数据能清档吗?
测试环境可以联系 Player Network 助手清档。
正式环境账号数据无法清档。
绑定账号成功后如何获取已绑定账号的信息?
登录成功后,调用 QueryUserInfo
回调结果 INTLAuthResult
的 BindList
即为已绑定账号的信息。
可以绑定两个相同渠道的账号吗?例如,一个游客账号绑定2个 Facebook 账号,或者 Facebook 账号绑定另1个 Facebook 账号?
不可以,每个渠道只能绑定一个账号。
绑定失败,错误码:retCode: 5
、thirdCode: 1403
。
可能是以下的原因造成的:
- 已绑定过该渠道的账号
- 被绑定的账号已被绑定过
- 被绑定的账号登录过
通过查询已绑定账号的信息,如果 BindList
,里没有被绑定渠道的账号信息则导致的原因为 2 或 3,否则是 1。
游客账号链接到渠道账号后, OpenID 会改变吗?
不会,OpenID 不会更改。
卸载游戏后游客账号会重置吗?
SDK V1.7 及之后的版本不会有这个问题,可调用 ResetGuest
重置账号。V1.6 及之前的版本,卸载游戏时将重置账号。
第三方渠道授权成功后绑定失败会无法切换账号,也无法登出
请清理浏览器数据后在浏览器登出第三方渠道账号,然后清理应用数据,再尝试绑定。
删号的 intl_cluster
是什么参数?
INTLConfig.ini
中 INTL_URL
的 base64URL
编码。
怎么清除 Android 游戏的缓存?
不同手机的操作顺序不同,下文中以 Google Pixel 4a 手机为例展示清除游戏缓存的步骤。
- 打开手机找到 设置。
- 选择 存储 > 内部共享存储空间 > 游戏 然后选择要清除缓存的游戏。
- 点击 清除存储空间 和 清除内存。
[Unity] MiniJson 反序列化拿到的 INTLAuthResult
为空
查看 Unity 的 Project Setting 下的 Managed Stripping Level 是否是 low。如果必须使用其他级别,请联系 Player Network 助手。
同一个第三方账号在不同环境的环境下生成的 OpenID 是否一样?
不一样,同一个第三方账号在不同环境会生成不同的 OpenIDs。
自动登录失败,错误代码: retCode: 5
、thirdCode: 11002
自动登录失败,因为登录令牌已过期并删除 (默认登录后30天)。发生错误时,游戏可再次拉起登录界面以允许玩家重新登录。
UI 界面,密码框和背景融为一体问题。
在 UIRoot
中设置 ForceVolatile
。
网页游戏配置问题
请检查下 Facebook 管理端是否有填写图中的 Website 配置,该配置代表游戏有网络版本。如果没有网络版本,请删除该配置。如果填写不正确,游戏会遭到 Facebook 禁用下架。
[iOS] 系统分享到 Facebook 显示的图片不是 ImagePath
的图片。
iOS 系统分享对内容处理的流程导致。因为同时提供了 Link
和 ImagePath
图片,iOS 先从 Link
里面获取到了一个图片。
[System] 同时分享文本,链接和图片,但文本不显示。
有图片或链接时,文字就不显示了,文字需要手动输入。
[Discord]查询好友的时候,拉取的信息是不是仅限于同玩好友?
不是,Discord 查询的是平台好友,不是同玩好友。
[Discord]多商店渠道包,如果每个渠道包的 Discord appid
不同,Discord 获取的好友是不是每个渠道包的数据是隔离的?
不是。
登录为什么不触发回调?
调用回调逻辑有问题:
- 打开界面的时候需要监听
AuthResultObserver
方法。
- Unity
- Unreal Engine
public override void Start()
{
base.Start();
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}
更多信息,请参见 AuthResultObserver
。
void ULevelInfiniteWindow::OnOpen()
{
Super::OnOpen();
FocusSampleUI();
AuthResultObserver = UINTLSDKAPI::GetAuthResultObserver().AddUObject(this, &ULevelInfiniteWindow::OnAuthResult_Callback);
}
更多信息,请参见 AuthResultObserver
。
- 初始化需调用这个接口:
- Unity
- Unreal Engine
public void OnLIPASSInitClick()
{
isVMStart = true;
var activityName = INTLAPI.GetConfig(LevelInfinite.DefaultActivityKey, "LILandscape");
ShowLogInNewLine(string.Format("Init:\nLI plugin ver:[{0}] \ndefault activity:[{1}]", LevelInfinite.Version, activityName));
LevelInfinite.InitLIP(font,LI_Sample_APP_VERSION);
LevelInfinite.SetUIRoot(uiRoot);
SetupCanvasResolution();
}
void ULevelInfiniteWindow::LIInit()
{
FString Version = LI_Sample_APP_VERSION;
// FString Version = FApp::GetBuildVersion();
UE_LOG(LogTemp, Display, TEXT(">>>>> LIInit, Version:%s"), *Version);
//#if PLATFORM_WINDOWS || PLATFORM_ANDROID || PLATFORM_IOS
UE_LOG(LogTemp, Display, TEXT(">>>>> call ULevelInfiniteAPI::InitLIP"));
ULevelInfiniteAPI::InitLIP(GetGameInstance<UGameInstance>(), Version);
ULevelInfiniteAPI::SetUIRoot(INTLGN_LIActivity);
#if PLATFORM_ANDROID || PLATFORM_IOS
ULevelInfiniteAPI::SetUICustomScale(1.44f);
#elif PLATFORM_WINDOWS
ULevelInfiniteAPI::SetUICustomScale(1.0f);
#endif
//#endif
}
登录报错 5_1401
或 5_30004
。
确认 LI PASS 配置已在 Player Network 控制台中成功发布。
游客登录失败,错误代码:retCode: 5
、thirdCode: 1104
。
Player Network 的登录与账号服务未启用游客登录,请到 Player Network 开启游客登录。
绑定成功后返回的 bindlist
为空,没有绑定成功的账号信息。
需要调用 QueryUserInfo
才返回 bindlist
,之后自动登录会带有 bindlist
。
如何重置游客账号?
SDK V1.7 及之后的版本需调用 ResetGuest
重置游客。V1.6 及之前的版本游戏卸载重装会重置游客账号。
游客登录发生崩溃
LI PASS V1.16 或之后的版本:
检查是否调用 INTLAPI.InitLIP()
初始化 SDK。
LI PASS V1.06 ~ V1.15:
检查是否调用 INTLAPI.InitLI()
初始化 SDK。
LI PASS V1.05 或更早的版本:
检查是否调用 INTLAPI.Init()
初始化 SDK。
登录失败,返回 retCode:5
、msg:CURLCode for more details
检查 Unity 打包时有没有读取到 INTLSDK.bundle
,或 UnityFramework
是否缺少 INTLSDK.bundle
。
为什么在多个 iPhone 上会使用到相同的游客 OpenID?
OpenID 会被 iCloud 同步。检查 iPhone 是不是登录了同一个 iCloud 账号并打开了 keychain 的开关。
iOS 设备A 游客登录生成 UID,设备B 游客登录时同样显示设备A 的 UID
iOS 的钥匙串安全同步可能已启用,导致多台设备的设备 ID 或 OpenID 相同。
iOS 的设备 ID 数据保存于 keychain 里,Player Network SDK 默认只读取而不会对数据进行修改或删除的操作。如果多台设备登录了同一个 Apple 账号,并且开启了 iCloud 云备份里面的钥匙串项目,iOS 系统会把 OpenID 给同步到所有设备。因此,多台设备有可能获得相同的设备 ID,游客登录也可能获得相同的 OpenID。
如果游戏有踢出功能,可能产生游客账号互踢的现象。玩家可到 iCloud 云备份关闭 Keychain Sharing 功能,卸载 app 后重装来解决问题。
更多详情,请参见 钥匙串安全同步。
PC 端登录失败,请求网络 API 返回错误代码:ret:77
、msg:CURLCode for more details
因 Player Network SDK V1.21.02 升级了 Windows 的 libcurl
,但未同步到之前版本的部分配置,导致在非 UTF8 的 Windows 系统上读取证书路径有问题。
可选择升级到 Player Network SDK V1.22.00 及以后的版本,或替换 INTLFoundation.dll
文件即可。更多信息,请联系 Player Network 助手。
登录失败,请求网络 API 返回错误代码:ret:28
、msg:the timeout time was reached
可以尝试以下排查步骤:
- 检查网络连接,确保网络稳定,或尝试重启路由器。
- 清除浏览器缓存和 cookies,或尝试使用无痕模式。
- 尝试使用不同的浏览器或设备。
- 如果使用 VPN,关闭 VPN 后重试。
- 检查服务器状态,例如查看相关状态页面来确认服务是否正常运行。
- 稍后再重试登录,服务器在负载高时可能会导致超时问题。
使用不满足游戏年龄限制的账号登录时,登录界面一直显示 Loading。
可以尝试以下排查步骤:
- 检查自动登录接口监听逻辑处理,是否有监听
INTLMethodID.INTL_AUTH_LOGOUT
,在登出回调后接着触发自动登录。 - 游戏的 Loading 页面可能挡住了 LI PASS 显示的 note,导致登录无法继续,建议在拉起 LI PASS 登录后去掉游戏的 Loading 页。
使用不满足游戏年龄限制的账号自动登录时,回调中的 AddWidgetToNode
报错缺失 a2 参数。
SetUIRoot
调用时机错误,建议在 LI PASS 界面打开前调用,确保根节点对象正常。
如何屏蔽三方渠道登录?
- 检查项目是否在 Player Network 控制台上开启和下发三方渠道的配置,如有开启则需关闭。
- 检查本地
Intlconfig.ini
文件中ACCOUNT_THIRD_CHANNEL_ANDROID/IOS/WINDOWS
字段是否有配置三方渠道。详细信息请参见 ACCOUNT_THIRD_CHANNEL。 - 在本地
Intlconfig.ini
文件中添加ACCOUNT_FLOW_SWITCH = 8
。详细信息请参见 ACCOUNT_FLOW_SWITCH。
调用 /v2/auth/decrypt_aes
接口,跨域报错 CORS error
检查接口调用方式,此接口不支持在浏览器中调用,需要使用后台调用。
更多信息请参见 后台接口概览。
Apple
Apple 代码错误
有关 Apple 错误代码的更多信息,请参见 Apple 错误代码(ASAuthorizationError
)。
有关所有的渠道错误代码,请参见 渠道错误代码。
登录失败,代码错误: 4
- 检查
UnityFramework
内是否含有INTLSDK.bundle
。 - 检查
Unity-iPhone
内是否含有INTLSDK.bundle
。
登录失败,代码错误: retCode: 5
、thirdCode: 1202
检查 Player Network 中的渠道配置 BundleID
是否正确。BundleID
格式应类似于 com.company.name
。
登录失败,代码错误: retCode: 5
、thirdCode: 1006
、msg:invalid gameid or channelid
- 检查 iOS INTLConfig.ini 中的 SDK 环境 配置是否正确。
- 检查 登录和账号服务 渠道信息是否在 Player Network 控制台中配置正确。
Apple 登录器支持横屏或屏幕自动旋转吗?
Apple SDK 不支持横屏设置或屏幕自动旋转。更多信息,请参见 Apple 的 Layout
如何获取 Key ID
和 PrivateKey
?
登录失败,代码错误:retCode: 9999
、thirdCode: 1000
、msg: Error Domain=com.apple.AuthenticationServices.AuthorizationError
排查步骤:
- Apple 登录是无法在重签包测试的,建议使用 TestFlight 或者添加设备白名单,确保设备在被允许的列表中。
- 确保
.entitlements
文件中com.apple.developer.applesignin
存在并正确配置,检查 Sign In with Apple 的权限是否开启。 - 安装配置文件(provisioning profile)中的权限声明必须与
.entitlements
文件中的声明一致。
登录失败,代码错误:invalid request Invalid client id or web redirect url.
-
检查 Apple Developer 的 Identifier 与 INTLConfig.ini 中的
APPLE_WEB_APP_ID
是否对齐。 -
检查 Apple Developer 的 Identifier 与 Player Network 控制台 Apple 渠道配置的 Bundleld for Web 是否对齐。
Apple 渠道签名证书配置提示:No profile for team '6H9S4KQ3C9' matching 'com.tencent.uc Production SignProvision' found
排查步骤:
- 下载并安装配置文件(provisioning profile)
- 方式一:从苹果开发者网站下载
- 访问 Apple Developer。
- 进入 Certificates/ldentifiers & Profiles → Profiles。
- 找到并下载名为
com.tencent.uc Production SignProvision
的配置文件,确保其状态为 Active(未过期)。 - 下载后双击文件,自动安装到 Xcode。
- 方式二:手动拖拽安装
- 直接将
.mobileprovision
文件拖到 Dock 栏的 Xcode 图标上。
- 直接将
- 方式一:从苹果开发者网站下载
- 如果开发者账号和证书检查都没问题,可以尝试删除 Xcode 缓存重启 Xcode 或者是重新安装下 app 配置文件。
Discord
Discord 登录报错 Unauthorized
需要先登录 Discord 应用。
iOS
Discord 登录后无法返回游戏
需检查下 projmods
文件里的 CFBundleURLSchemes
配置。
Discord 登录成功后弹出错误码 "ret":10040602
检查下 Player Network 控制台上 Discord 渠道的 AppKey
配置,应填为 Discord 提供的 CLIENT SECRET
。
Discord 渠道登录报错 9999 -1
Discord 内部问题,可能是当时 Discord 的服务问题。
DMM
DMM 错误代码
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 2000:
// The logged-in user has no profile registered.
break;
case 300:
// Failed to get the DMM member ID
break;
case 2002:
// User who withdraws from membership
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 2000:
// The logged-in user has no profile registered.
break;
case 300:
// Failed to get the DMM member ID
break;
case 2002:
// User who withdraws from membership
break;
default:
// Unknown error code
break;
}
}
}
错误代码 | 错误信息 |
---|---|
300 | 获取 DMM 成员 ID 失败 |
400 | 错误请求 |
403 | OAuth 验证失败 |
500 | DMM 游戏平台错误 |
1000 | 获取应用程序信息失败 |
2000 | 登录用户未注册 |
2001 | 用户已在黑名单 |
2002 | 刪除 DMM 帳號 |
Epic
登录报错 9999_5, msg: EOS_AccessDenied
权限不足导致,使用的账号需要在 Epic Developer Portal 添加为成员,并赋予开发者角色权限。
更多详情,请参见 Epic 组织页面选项卡。
Facebook
Facebook 常见问题
有关 Facebook 错误代码的更多信息,请参见 Facebook 错误代码。
有关所有的渠道错误代码,请参见 渠道错误代码。
Facebook 登录失败,无 timeout,返回错误代码:6
(timeout)
检查是否已在 INTLConfig.ini
LIFECYCLE
中配置 Facebook。有关详细信息,请参见 INTLConfig.ini 配置。
登录 Facebook 后没有返回头像。
如果 Facebook 的应用类型为 Gaming Service,需要更新至 Player Network SDK V1.7 或更高版本以返回头像。
Facebook 登录失败,错误代码:retCode:5
、thirdCode:1202
.
Player Network 配置错误。为确保相关参数对齐,请参见 配置 Player Network SDK 后端。
Facebook 登录失败,错误信息:Key Hashes not configured or not matched
。
Facebook 控制台配置错误。要确 Key Hashes 配置正确,请参见 配置应用程序(iOS) / 配置应用程序(Android)。
Facebook 登录失败,SERVER_ERROR: [code] 1675030 [message]: Error during query execution. [extra]:
检查账号是否已添加到测试环境的 Facebook 登录允许列表中。设置允许列表
-
在 Server Editor 页面,点击 Whitelist。
-
在弹出的 Select Whitelist 中,选择区域的允许列表。
为每个区域配置一个允许列表。该允许列表用于整个区域。
可在 Whitelist 页面,添加、删除或编辑允许列表内容。
Facebook 登录功能已禁用弹出提示:为确保账号安全,浏览器嵌入的 Facebook 登录功能已被禁用。
安装 Facebook 应用程序并登录。如果需要通过浏览器登录,Facebook 要求用户安装支持自定义标签的浏览器,如 Chrome 浏览器。
如何更改 Facebook 同意屏幕上显示的应用程序名称?
在 Facebook 应用配置 页面上进行更改。
Facebook 登录失败,提示 "App not active" 错误。
如果游戏已准备发布,请将 App Mode 从 Development 更改为 Live。更多信息,请参见 发布检查表 - Facebook。
如果游戏正在进行内部测试,请将所需用户添加为 Testers。更多信息,请参见 入门指引 - Facebook - 添加用户权限。
Facebook 登录失败,网页登录成功,但报告了错误 "Invalid Claims"。
- 确保已填写以下必填字段。
- 检查
appid
是否正确,有没有多余的空格。
如何生成 Facebook 密钥哈希(Key Hash)?
当您的应用程序发布到商店时,与 Facebook 的集成可能无法正常工作,除非在您的 Facebook 应用程序 ID 中生成发布密钥哈希 并添加到 Android 设置中。这将保证 Facebook 与您的应用程序之间的信息交换是经过验证的。
如需了解更多信息,请参见 创建发布密钥哈希。
-
从 Google Play 获取应用程序签名密钥散列
Google 的 Play App Signing 不提供密钥库,而在 Facebook 上配置则需要密钥库来生成密钥哈希值。请按照以下步骤获取 Facebook 所需的哈希值:
-
打开 Google Play Console 并选择 Release > Setup > App integrity。
-
在 App signing key certificate 部分,复制 SHA-1 值。
-
打开 Windows 上的 Terminal/Bash(例如 Git Bash),输入以下命令获取哈希值。
echo {INTL_SHA-1_KEY} | sed s/\\://g | xxd -r -p | base64
-
APK 密钥散列仅用于 APK 测试。公开发布时请使用 Google Play 的应用程序签名密钥散列。
-
从密钥库获取 APK 密钥散列
- Mac
- Windows
要为密钥存储生成哈希值,请运行以下命令:
keytool -list -printcert -jarfile [path_to_your_apk] | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
对于 Windows 系统,您需要具备以下条件:
- Java 开发工具包中的密钥和证书管理工具(keytool)
- 谷歌代码档案中的 OpenSSL for Windows Library
要为密钥库生成哈希值,请在 Java SDK 文件夹中的命令提示符下运行以下命令,并相应替换密钥库的
KEY_ALIAS
和KEY_PATH
:keytool -exportcert -alias <KEY_ALIAS> -keystore <KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
确保使用首次创建密钥时设置的密码。
-
从 APK 软件包获取 APK 密钥散列
- Mac
- Windows
要为密钥存储生成哈希值,请运行以下命令,并相应替换密钥存储的
KEY_ALIAS
和KEY_PATH
:keytool -exportcert -alias <KEY_ALIAS> -keystore <KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
对于 Windows 系统,您需要具备以下条件:
- Java 开发工具包中的密钥和证书管理工具(keytool)
- 谷歌代码档案中的 OpenSSL for Windows Library
- Gitbash
要为密钥存储生成哈希值,请使用 Gitbash 在 Java SDK 文件夹的命令提示符下运行以下命令:
keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64
确保使用首次创建密钥时设置的密码。
-
将密钥哈希值复制到 Facebook
该命令将生成一个28个字符的字符串。将密钥哈希值复制并粘贴到 Facebook app ID 中的 Android 设置中。
检查 Facebook 应用 ID 中的 Android 设置是否也包含正确的 Android 软件包名称和主活动类。
Facebook 登录提示 “登录出错”。
keyhash
配置错误。
- 检查 Facebook App Dashboard 是否配置了
keyhash
- 确认
keyhash
是否计算正确 - 如果使用了 Google 商店,Google 也需要更新签名密钥
Facebook app 登录报错 Invalid ID token from login response
,iOS 9999-309
/Android 9999 -1
。
手机因修改了系统时间,导致 Facebook 安全校验不通过。在手机设置中找到日期和时间设置后,打开自动设置时间。

iOS Facebook 分享链接成功,但是分享图片失败,而且在 Facebook app 个人页面看不到分享的图片
-
确认 Facebook 开发者管理平台配置的 app 名称与
INTLConfig.ini
中FACEBOOK_DISPLAYNAME
完全一致。 -
Facebook 官方对 app 名称没有给出明确的要求,建议不要使用特殊符号。
Facebook 渠道分享图片失败。报错:"ret":-1、"msg":"Need Messenger installed or login!"、"method_id":201、"ret_code":15、"ret_msg":"Need install app"
-
检查 Facebook app 是否安装。
-
安装 Messenger,打开 Messenger 并确认登录成功。
-
确认安装包里面的
AndroidManifest.xml
文件声明,若无声明,无法判断系统是否安装了 Facebook app。 -
通过 demo 的功能来测试手机上是否安装了 app:
- 选择 Tool > isAppInstalled。
- 在 channel 输入包名,extraJson 不用填。
例如测试 Facebook,输入:com.facebook.katan
。
iOS 如何修改 Facebook 渠道登录同意页面的应用名称?
Facebook iOS SDK 在进行鉴权时使用的 Apple ASWebAuthenticationSession
,会从 Xcode 工程中的 TargetName
获取显示名,而并非 CFBundleName/CFBundleDisplayName
。
如果要调整应用名称,请修改 Xcode 工程中的 TargetName
。
有关 ASWebAuthenticationSession
的讨论,请参见 ASWebAuthenticationSession
和 SFAuthenticationSession
的显示名问题。
Facebook app 类型从游戏类型切换到 Gaming Services 类型注意事项
- 登录权限发生变更,需要传入默认权限
gaming_profile
。 - Facebook 提供的后台访问 API 域名发生变更,需要知会 Player Network 后台同学 [v_fyjzhan] 更改 Player Network 后台访问 Facebook 的域名。
Facebook 的邀请功能(GameRequest)注意事项
- 避免 频繁发送邀请,否则可能会导致邀请收不到
- 有一定的时间延时
- Facebook 管理端可以屏蔽消息
- 如果 Facebook app 尚未发布,被邀请人也需要有测试权限才能收到邀请
- 测试过程中,尽量使用测试账号,避免上述问题
Facebook 登录不会打开 Facebook 应用进行鉴权
在 iOS 17 及以上版本设备禁用 App Tracking Transparency(ATT)将触发 Facebook 的 限制登录 模式,应用切换不受支持。请使用 WebView 进行登录鉴权。
Facebook Android SDK 在 Facebook App Dashboard 被错误显示为 V0.x.x,提示 "Needs upgrade"
Facebook Android SDK V16.x.x 的版本信息显示在 Facebook App Dashboard 有问题,业务可替换 Gradle 版本来解决。
从 V1.21.00 起,Player Network SDK 使用 Facebook Android SDK V16.1.3,并可能受该问题影响,版本信息请参见 SDK 版本关系说明。
有关问题的更多信息,请参见 Github facebook-android-sdk 上的 问题 #1191。
Facebook 登录提示 “你无法用你的 Facebook 账户登录这款应用”
如果 Facebook 开发者平台内添加了小游戏产品,有可能导致该错误。请先将小游戏产品移除后再尝试重新登录。
Facebook 开发者平台提示图谱 API 版本已经停用,需更新至 V15.0 或更高版本
Player Network SDK 已更新后台 Facebook 图谱 API 至 V19.0 版本。PNT账号平台将持续维护并自动升级Facebook Graph API版本,确保完全符合Meta官方要求。开发者无需担心Meta后台的版本过期提示,这不会影响游戏客户端Facebook登录、数据上报等任何功能。最新版本兼容性信息参考SDK 版本关系说明
在 Facebook 启用 2FA 后无法登录游戏
如果玩家在 Facebook 启用了 2FA,并在使用 Facebook 登录游戏时选择 No, it's not me,页面将跳转到 Facebook 主页面而无法成功登录。
建议玩家选择 Yes, it's me 来完成 2FA 认证。如果仍然登录失败,可暂时先禁用 2FA,在成功登录游戏后重新启用 2FA。
Facebook 切换上线模式时,Facebook 提示 “检测到问题网址”
这是因为 Facebook 无法在 Google Play 中找到相应的 Google 应用包名,导致链接无法访问。请确保谷歌商店链接是可访问的。链接修复后,即可切换上线模式。
Google Play 链接格式:http://play.google.com/store/apps/details?id=``<package_name>
- 可访问链接示例参考:
- 不可访问链接参考:
谷歌应用上架后,您的开发者页面 URL 最多需要1个小时才能预览,并在24小时内向 Google Play 用户展示。更多详情,请参见 创建或更新开发者页面。
App Store 应用信息的更新可能会有长达7天的延迟。更多详情,请参见 验证 Meta Audience Network 应用所有权。
Facebook 登录报错: Feature Unavailable: Facebook Login is currently unavailable for this app, since we are updating additional details for this app.
Facebook 渠道的gaming_profile
权限,需要申请高级权限 Advanced Access
。
在使用 Facebook 登录功能时,需要将 gaming_profile
的访问级别切换为高级 Advanced Access
,并在 权限和功能 中进行申请。
Game Center
Game Center 错误码
有关 GameKit 错误域错误代码的更多信息,请参见 GKError.Code。
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 6:
//GKError.Code.notAuthenticated: The system can’t complete the requested operation because the system hasn’t authorized the player.
break;
case 15:
//GKError.Code.gameUnrecognized: The system can’t complete the requested operation because Game Center doesn’t recognize the app.
break;
case 3:
//GKError.Code.communicationsFailure: The system can’t complete the requested operation due to an error communicating with the server.
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 6:
//GKError.Code.notAuthenticated: The system can’t complete the requested operation because the system hasn’t authorized the player.
break;
case 15:
//GKError.Code.gameUnrecognized: The system can’t complete the requested operation because Game Center doesn’t recognize the app.
break;
case 3:
//GKError.Code.communicationsFailure: The system can’t complete the requested operation due to an error communicating with the server.
break;
default:
// Unknown error code
break;
}
}
}
Game Center 登录或绑定后没有回调
如果用户三次取消登录或绑定操作,将无法 打开 Game Center 登录界面。
只有当游戏进程调用 Game Center 登录或绑定 API 时,才会在第一次请求时返回回调。因此,当用户无法在游戏内打开 Game Center 登录框时,需要在 Settings > Game Center 手动登录 Game Center。
Garena
登录失败,响应超时。
检查日志中的 requestExchangeFacebookToken
是否成功返回。如果返回失败,请联系 Garena 的负责人。
登录经常超时,如何修改登录超时时间?
登录超时的默认值是30秒。请通过 INTLConfig.ini 的 SDK_AUTH_OVERTIME
和 WEB_AUTH_OVERTIME
设置登录超时时间。
SDK_AUTH_OVERTIME
是拉起应用登录,WEB_AUTH_OVERTIME
是拉起网页登录。建议两个同时都配置。
Google
Google 常见问题
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 9 :
//The version of the Google Play services installed on this device is not authentic.
break;
case 3:
//The installed version of Google Play services has been disabled on this device
break;
case 10;
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 7:
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 16:
//One of the API components you attempted to connect to is not available. The API will not work on this device, your app or this account, and updating Google Play services will not likely solve the problem
break;
default:
// Google handle error
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 9 :
//The version of the Google Play services installed on this device is not authentic.
break;
case 3:
//The installed version of Google Play services has been disabled on this device
break;
case 10;
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 7:
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 16:
//One of the API components you attempted to connect to is not available. The API will not work on this device, your app or this account, and updating Google Play services will not likely solve the problem
break;
default:
// Google handle error
break;
}
}
}
ConnectionResult
错误代码 | 错误信息 |
---|---|
5 | 无效账号 |
7 | 网络错误 |
10 | 配置错误 |
13 | 被用户取消 |
16 | 请求的 API 已禁用。 |
更多信息,请参见 ConnectionResult。
GamesActivityResultCodes
错误代码 | 错误信息 |
---|---|
10001 | 重新连接 GoogleApiClient。 |
10002 | 登录失败。 |
10003 | 用户未获得游戏授权。 |
10004 | Gaming Services 配置错误。 |
10006 | 由于网络错误,服务器请求失败。 |
更多信息,请参见 GamesActivityResultCodes。
有关所有的渠道错误代码,请参见 渠道错误代码。
配置崩溃
如果 App ID 和 Server Client Key 配置不当,就会发生崩溃:
Caused by: java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
at com.google.android.gms.common.internal.zzf$zza.zzb(Unknown Source)
at com.google.android.gms.common.internal.zzf$zza.zzu(Unknown Source)
at com.google.android.gms.common.internal.zzf$zze.zzxH(Unknown Source)
at com.google.android.gms.common.internal.zzf$zzd.handleMessage(Unknown Source)
...
GMS 更新和版本兼容性
由于版本兼容性问题,早期版本的 Google Play Services 无法一起使用。目前,Player Network SDK 支持 GMS 版本 16.0.1 和 Firebase 版本 16.0.5。
DEVELOPER_ERROR 错误
请勿在此处使用 Android 客户端密钥,否则将出现 DEVELOPER_ERROR。确保调试时使用的签名与上传到 Google console 的应用签名一致。
GOOGLE_CLIENT_KEY
是 Player Network SDK 所需的 网络客户端密钥。
无法登录 Google,返回第三方错误代码 10
第三方错误代码 10
表示 DEVELOPER_ERROR
,由配置问题引起。
在生成安装包时需确保:
- Google Cloud Platform 配置与 Player Network 配置一致
- INTLConfig.ini 中的
GOOGLE_CLIENT_KEY_ANDROID
包含 Google Cloud Platform 的 Web Client ID - 生成的安装包名称和
SHA-1
与 Google Cloud Platform 配置一致
在上传 AAB 包至 Google Play 时,Google Play 可能会对包体进行重新签名,导致实际下载的 AAB 包的 SHA-1
与上传时的不一致。
可以根据以下步骤,手动更新 Google Play 的 App signing key certificate:
- 进入 Google Play Console,在左侧导航栏选择 Setup > App integrity。
- 选择 App signing。
- 点击 Request key upgrade。
- 选择 Upload a new app signing key from Java keystore。
- 按照 Google 提供的步骤,下载生成密钥的工具并上传生成的
ZIP key
文件。 - 上传后,点击右下角的 Upgrade > Upgrade Google signing key certificate。
Google 账号登录时,Google 是否会返回账号头像?
是,Player Network SDK 会返回 Google 账号头像。请参见 Unity SDK 或 Unreal Engine SDK 中 AuthResult
的 PictureUrl
。
Google 无法登录,选择电子邮件后,弹出的登录界面显示 "Loading",直至登录超时。
在 Google API 控制台上,将 "Publishing status" 设置为 "PUBLISH APP"。有关详细信息,请参见 生产环境配置。
iOS 启动时应用程序突然关闭
转到 Plist Configuration,检查是否配置了 GoogleService-Info.plist
。
Google 登录授权错误(403)
Google API 控制台 尚未授权。应用程序仍在开发中。在 Google API 控制台添加测试用户,或将 "Publishing status" 设为 "PUBLISH APP"。
在 Android 设备上,当我点击 Google 登录时,授权界面无法打开,错误代码为 ret_code:9999
- 检查您的手机是否可以访问互联网。
- 检查您的手机是否可以访问国际(非中国大陆)网站。
- 检查是否正确安装了 GMS。请参见 如何安装 GMS。
在 iOS 设备上,我无法通过 Google 登录,显示错误信息:You must specify clientID for GIDSignIn
检查 main target 是否有 INTLSDK.bundle
。如果缺少,请手动添加。
在 iOS 设备上,我无法通过 Google 登录,出现错误信息:Audience is not a valid client ID
。
检查 INTLConfig.ini
中的 GOOGLE_CLIENT_KEY_ANDROID
配置是否正确。按照 INTLConfig.ini 配置 中的说明完成 iOS 配置。
如何更改 Google Web 同意页面上显示的应用程序名称?
在 OAuth Consent screen 页面的 [Authorised domain] 中进行更改。
Google 登录授权错误 Error 400: redirect_uri_mismatch
可能因应用设置中的重定向 URI 与授权重定向 URI 不匹配,或使用的 URI 不是在 Google API 控制台中为客户端 ID 指定的 URI 导致。
Google 登录报错 1281
idtoken
过期。Google 登录后拿到 idtoken
,idtoken
本身包含 token 有效期信息。
如果把手机本地时间调回过去的日期,等待大概一小时后再登录 Google,token 不会刷新,再请求就会报 1281
错误。
iOS 平台 Google 渠道已经配置了 GOOGLE_CLIENT_KEY_IOS
,是否还需要配置 GOOGLE_REVERSED_CLIENT_ID
?
GOOGLE_REVERSED_CLIENT_ID
字段已废弃无需配置,iOS 平台需配置 GOOGLE_CLIENT_KEY_IOS
、GOOGLE_CLIENT_KEY_ANDROID
字段。
GOOGLE_CLIENT_KEY_IOS
字段是 Google 渠道的 iOS Client key
,为 iOS 平台必填字段。
GOOGLE_CLIENT_KEY_ANDROID
字段是 Google 渠道 的 Android Web Client key
,为 iOS 平台和 Android 平台必填字段。
更多信息,请参见 Google 渠道 SDK 配置。
绑定 Google 渠道失败后,无法再次拉起 Google 账号授权界面
该问题已于 SDK V1.26.00 优化。
在登出游戏后选择 Google 渠道登录,会直接返回授权成功,无法拉起 Google 账号授权界面进行账号切换
Android 设备非 Google 渠道登录场景,绑定 Google 时存储的登录态在登出游戏时未完全清除所导致。
可在 Google 渠道登录后重新登出游戏,清除谷歌登录态,或在 INTLConfig.ini
文件修改配置 GOOGLE_EVERY_LOGIN_CHOICE_USER = 1
。
LINE
LINE 代码错误
有关 LINE 错误代码的更多信息,请参见 LINE iOS 错误代码 和 LINE Android 错误代码
有关所有的渠道错误代码,请参见 渠道错误代码。
LINE 登录界面 error 400
- 检查 adaptation to Swift-LINESDK。
- 检查配置文件、软件包名称和
LINE_CHANNEL_ID
是否输入正确。 - 检查
INTLLINEKit.projmods
文件。 - 检查 LINE Developers Console 回调 URL。
LINE 登录,点击 "允许" 后无法从 Webview 或 LINE 应用程序跳转回游戏。
在 Player Network SDK V1.10 AndroidManifest
文件中,如果 Android:taskaffinity
属性值为空,则 LINE WebView 登录后将无法重定向。
删除此代码即可解决 LINE 登录问题。
LINE 登录界面没有图标。
进入 LINE 平台 设置应用程序图标。
LINE 登录提示 Error, cannot process properly
。
这可能是网络问题造成的,请使用不同的网络环境再试一次。
LINE 登录失败,错误代码:3016,错误信息类似于:CryptoError: Verification failed for key: Swift.KeyPath<LINESDK.JWT.Payload, Swift.Optional<Foundation.Date>>. Got: 2022-04-19 12:15:12 +0000, expected earlier than 2022-04-19 12:10:47 +0000
.
用户修改设备时间时会出现此错误。
在 iOS 中国版中无法访问 LINE 网页,打开 LINE 并登录后没有回调
这是 LINE SDK 的一个已知问题。
如何更改 LINE 同意屏幕上显示的应用程序名称?
在 LINE App Basic Settings 页面进行更改。
登录 LINE 渠道,报错 403 forbidden
。
使用的 IP 可能已被 LINE 封锁,建议尝试更换 IP、切换账号、切换网络、清空缓存后重新登录。
如果问题仍未解决,请联系 LINE 团队获取更多信息。
PS5
Sony 有三种环境 dev,QA 和产品。Player Network SDK 使用哪种环境? 如果当前游戏处于开发环境, 是否需要在稍后审查和发布时对 Player Network SDK 的配置进行相关调整?
Sony 的环境可以在开发引擎上切换。SDK 将自动识别 Sony 环境并通知 SDK 服务器,和 SDK 服务器将根据环境 ID 访问 Sony 不同的服务器。 不管环境如何,当从开发到质量保证到正式环境时,Player Network SDK 可以在没有额外设置的情况下自动切换。
QQ
登录报错 "ret":1204, "msg":"ret[-3], msg[app has no privilege to use this api]
这是由 QQ 渠道调用的接口缺少登录权限所导致,详见 配置 QQ 登录 页面内 iOS 和 Android 的教程中,前提条件 下有关 QQ Connect 平台内容的 申请 QQ Connect OpenAPI 能力 is_login 权限 部分。
Steam
登录失败,error code: 5, third error code: 1206
这是由于 Steam 连接断开造成的。打开 Steam 并重新连接。
UE 编辑器中的 Steam 登录失败
请将 steam_appid.txt
文件放到运行 UE4Editor.exe
的同一目录下,即 yourEngine/Engine/Binaries/Win64
目录。
怎么在 editor 中 Steam 登录报错定位程序输入点?
将 steam_appid.txt
文件放到运行 UE4Editor.exe
的同一目录下,即 yourEngine/Engine/Binaries/Win64
目录。如果 app 有自己的 ID 这里替换成自己的,如果没有的话 就用 480
。
游戏启动时提示 SteamAPI_Init failed
,如 ret:17, retMsg "SteamAPI_Init failed. Please check your Steam client status"
。由于 Steam API
初始化函数并没有详细区分错误类别,请按照以下步骤尝试排查:
- 确认 Steam 客户端是否已启动并登录。
- 确认所使用的 Windows 账号持有管理员权限。
- 卸载重装 Steam 客户端、更换设备。
- 到 Steam 社区 寻求更多解决方法。
ret:33, retMsg "Please launch app by Steam Client"
游戏不是从 Steam 客户端正常启动,删除游戏可执行文件目录下的 steam_appid.txt
后重试。
ret:35, retMsg "STEAM_USER_NOT_LOGINED"
玩家没有登录 Steam 客户端导致报错,建议检查玩家的 Steam 客户端是否已登录成功,是否在线。
网络错误,error code: 5, third error code: 1200
Player Network 后台到 Steam 后台的网络超时,可以联系业务接口人。
用户密钥、发行商密钥,两种 Steam Web API 密钥应该使用哪一种?
集成 Player Network SDK 必须使用发行商密钥,因为 SDK 需要访问仅发行商密钥才具备权限的应用 级数据和认证服务。
用户密钥(user key):关联个人 Steam 账号,可用于访问与该用户相关的有限数据。通常用于个人或非商业项目。
发行商密钥(publisher key):关联 Steamworks 合作伙伴账号,可用于访问更广泛的应用级数据,例如游戏所有权、身份验证,以及发布游戏的用户统计数据。
有关 Steam Web API 密钥的更多信息,请参见 使用 Web API 密钥进行授权。
需要为 Steam Web API 密钥配置 IP 白名单吗?
一般情况下,无需为 Steam Web API 密钥配置 IP 白名单。如果密钥的白名单为空,Player Network 的服务器将能正常访问并调用相关接口。
如果白名单存在任何一条 IP,该密钥将受到限制,只允许白名单中的 IP 访问接口,其他 IP 的请求将返回 403 - Forbidden
错误。白名单中需添加 Player Network 的服务器 IP,以确保其能够正常访问。
如有需要将 Player Network 的服务器 IP 添加至白名单,请联系 Player Network 助手。
Web 端 Steam 渠道登录报错 e87
可以尝试以下排查步骤:
- 检查网络连接,确保网络稳定,或尝试重启路由器。
- 清除浏览器缓存和 cookies,或尝试使用无痕模式。
- 尝试使用不同的浏览器。
- 如果使用 VPN 或代理,尝试关闭后重试。
- 查看 Steam 官方状态页面,确认没有维护或故障。
- 尝试在不同设 备或账号上登录。
如果以上方法无效,建议联系 Steam 客服获取进一步支持。
Twitter
Twitter 错误代码
有关 Twitter 错误代码的更多信息,请参见 Twitter 响应和错误代码。
有关所有的渠道错误代码,请参见 渠道错误代码。
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 401:
/*
Unauthorized: There was a problem authenticating your request.
This could be due to missing or incorrect authentication credentials.
*/
break;
case 500:
/*
Internal Server Error: Something is broken.
This is usually a temporary error, for example in a high load situation or if an endpoint is temporarily having issues.
*/
break;
case 503:
// Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later.
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 401:
/*
Unauthorized: There was a problem authenticating your request.
This could be due to missing or incorrect authentication credentials.
*/
break;
case 500:
/*
Internal Server Error: Something is broken.
This is usually a temporary error, for example in a high load situation or if an endpoint is temporarily having issues.
*/
break;
case 503:
// Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later.
break;
default:
// Unknown error code
break;
}
}
}
在 Android 设备上,如果用户登录 Twitter 后注销,下次登录时再点击注册,则会报告网络错误。
出现这种情况是因为 https://.api.twitter
的 cookie 尚未清除。在 Android 设备上,只能通过 RemoveAllCookie
方法清除 cookie,但这会删除所有网站的 cookie 信息。此问题目前尚未解决。
Twitter 登录界面持续显示 "Loading"。
- 检查 Twitter 控制台是否配置了回调允许列表。
- 检查 Player Network
key
和secret
是否正确。
如何更改 Twitter 同意页面上显示的应用程序名称?
在 Twitter App Configuration 页面上进行更改。
当短时间内分享太多时,Twitter 会限制分享。请在日志确认分享接口是否被限制。如果日志显示 Twitter API error: Your account is suspended and is not permitted to access this feature (code 64)
,则接口已被限制。
在 iOS 设备上,Player Network SDK V1.18 之前的版本不支持转换 Twitter 账号,只能使用第一个分享的账号分享,转换账号则需要重新安装游戏包。
Twitter iOS 分享报错 ret_code:9999
、third_code:32
Twitter SDK 的登录态无效。这个问题已经在 V1.16.05 之后解决。如果这个问题在 V1.16.05 之后仍然存在,在 extra_json 中配置 {"login_first":1}
。更多信息,请参见 Twitter 好友已知问题。
Twitter 启用 2FA 后无法登录游戏
如果玩家在 Twitter 启用了 2FA,使用 Twitter 账号登录游戏的时候可能会失败,页面跳转到 Twitter 主页面而无法成功登录。建议玩家暂时先禁用 2FA,完成登录过程后再重新启用 2FA,提高账号安全性。
Ubisoft
Ubisoft 错误代码
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 0:
//成功
break;
case -4:
//请求 Uplay Roaming Profile 失败
break;
case -6:
//创建 Roaming Profile 失败
break;
case -1:
//创建 Guest 用户失败
break;
case -8:
//创建 Roaming 会话失败(Flow2 登录)
break;
default:
// 未知错误代码
break;
}
}
}
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 0:
//成功
break;
case -4:
//请求 Uplay Roaming Profile 失败
break;
case -6:
//创建 Roaming Profile 失败
break;
case -1:
//创建 Guest 用户失败
break;
case -8:
//创建 Roaming 会话失败(Flow2 登录)
break;
default:
// 未知错误代码
break;
}
}
}
错误码列表 | 说明 |
---|---|
0 | 成功 |
-1 | 创建游客用户失败 |
-2 | 创建游客会话失败 |
-3 | 创建 UplayRoaming 会话失败 |
-4 | 请求 Uplay Roaming Profile 失败 |
-5 | 创建 Roaming 用户失败 |
-6 | 创建 Roaming Profile 失败 |
-7 | 创建 Roaming 会话失败 (Flow 1 首次登录) |
-8 | 创建 Roaming 会话失败 (Flow 2 登录) |
-9 | 创建 Roaming 会话失败 (Flow 3 自动登录) |
-10 | 重命名用户失败 |
-11 | 自动登录无用户数据 |
-12 | 自动登录无效用户 |
-13 | 绑定参数无效 |
-14 | Guest Facade 为空或 Session 无效 |
-15 | Uplay Facade 为空或 Session 无效 |
-17 | 登录取消 |
-18 | link 取消 |
-10000 | 游客绑定正式账号,用户通过 WebAuth 登录成功后,UbiservicesSDK 请求Ubiserver 判断该正式账号可绑定。 |
-10001 | 游客绑定正式账号,用户通过 WebAuth 登录成功后,ubiservicesSDK 请求 ubiserver 判断该正式账号不可绑定。 |
-20000 | 用户通过 WebAuth 登录成功后,UbiservicesSDK 检测本地已有 Guest 账号,让用户选择是否绑定当前 游客账号。 |
WeChat
iOS 登录报错 9999_9999,"call WX api sendReq return failure"
检查本地 INTLConfig.ini
文件中的 WECHAT_UNIVERSAL_LINK_IOS
配置。
Web 场景,微信应用内选择第三方渠道登录时,无法跳转回活动页面或显示白屏
微信登录目前只支持微信渠道授权,其余渠道会因为微信的内置 WebView 组件不支持第三方渠道登录导致白屏或授权成功后无法跳转回活动问题。更多详情,请参见 实现第三方渠道登录。
社交
公告
为什么无法获取公告?
- 检查是否调用 RequestNoticeData 接口。
- 检查公告是否在有效期
- 检查时区是否设置正确
- 检查语言传参是否标准
- 检查地区传参是否标准
- 检查公告配置的环境与客户端是否一致(测试/正式环境)。
修改公告后,仍然拉取到旧公告
通过重启游戏或修改缓存配置 NOTICE_INTERVAL 来清除缓存公告。
无法获取葡萄牙语公告
葡萄牙语的正确语言类型传参为 pt
。更新信息,请参见公告的 [语言类型定义]。
公告发布和下线时没有回调
公告需要手动获取。
通过公告的哪个字段来区分自定义值
通过 ExtraData
的 INTLNoticeInfo
区分。
获取公告数据传入的参数与公告回调信息的关系
回调信息 INTLNoticeInfo
由请求参数 region
返回,公告所属内容列表 ContentList
由请求参数 langType
返回。
示例:
- 公告只配置了葡萄牙语(pt),却使用英语(en)去拉取公告,那么会拉取到一个
INTLNoticeInfo
, 但是ContentList
是空的。 - 公告配置的信息语种英语(en),信息正文却填写了葡萄牙语(pt),此时获取公告传入
en
,拉取结果会得到英语(en)和葡萄牙语(pt)两条公告。
收不到公告的 PictureList
?
INTLNoticeInfo
和 INTLNoticeContent
都包含 PictureList
。检查 PictureList
是否配置在正确的数据结构中 。
Player Network 的公告,拍脸,新闻有什么区别?
新闻不通过 SDK 拉取,拍脸(弹窗)和公告是一样的。
客户端如何获取好友列表?
目前客户端仅支持 Epic 渠道获取好友列表。其他渠道需要通过后台获取,详见 QueryFriends 接口。