错误码

每个错误都有稳定的错误码。SDK 使用相同的错误码(Unity 中为枚举),另外还有几个错误码用于请求到达服务器之前发生的问题。

代码注释和 API 名称保留英文,以便与 SDK 保持一致。

本页内容

API 错误#

错误码HTTPUnity何时出现可重试?
validation400, 422Validation输入无效;details.fields 会指出具体字段。否
unauthorized401Unauthorized密钥错误,或玩家令牌缺失、过期或已被撤销。否
forbidden403Forbidden项目已暂停、端点仅限服务器调用,或必须使用 HTTPS。否
plan_limit403PlanLimit已达到套餐上限(玩家、条目、存储空间等)。不会删除任何数据。否
not_found404NotFound未知的端点、排行榜、玩家或存档键。否
conflict409Conflict操作已完成,例如本周期的奖励已经领取。否
revision_mismatch409RevisionMismatch云存档已在另一台设备上被修改。否
rate_limited429RateLimited每分钟请求过多,或处于排行榜冷却时间内。请等待 Retry-After 秒。是
quota_exceeded429QuotaExceeded账号的每日请求配额已用完;将于 00:00 UTC 重置。否
server_error500ServerError服务器出现故障。SDK 会自动重试安全请求。是

仅限 SDK 的错误#

错误码HTTPUnity何时出现可重试?
network—Network无法连接服务器。是
timeout—Timeout请求耗时超过了超时时间。是
not_configured—NotConfigured基础 URL、项目 ID 或客户端密钥缺失或无效。否
not_signed_in—NotSignedIn在登录前或会话过期后发起了玩家调用。否
signature_invalid—SignatureInvalid远程配置未通过验证,因此未被使用。否
parse_error—ParseError无法读取响应(通常是代理或 HTML 错误页面导致的)。否
link_expired—LinkExpired账号关联页面已过期;请重新开始。否
link_cancelled—LinkCancelled账号关联流程已取消。否

处理错误#

message 是给开发者看的,不要展示给玩家;请根据错误码进行判断。只重试可重试的错误,并记录请求 ID,以便在日志页面中找到对应的请求。

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", 10);
if (top.Ok)
{
    foreach (var entry in top.Value.Entries)
        Debug.Log($"#{entry.Rank} {entry.PlayerName} {entry.Score}");
}
else if (top.Error.IsRetryable)
{
    // Network, timeout, 5xx or rate limit: try again later
    Debug.Log("Retry in " + top.Error.RetryAfterSeconds + " s");
}
else
{
    Debug.LogWarning(top.Error.Code + ": " + top.Error.Message + " (" + top.Error.RequestId + ")");
}

搜索页面标题、小标题和正文。

↑↓ 选择 ↵ 打开 Esc 关闭