Mã lỗi

Mọi lỗi đều có mã ổn định. Các SDK dùng cùng các mã này (Unity dùng enum), cộng thêm vài mã cho các sự cố xảy ra trước khi yêu cầu đến được máy chủ.

Chú thích trong mã và tên API được giữ nguyên tiếng Anh để khớp với SDK.

Trên trang này

Lỗi API#

MãHTTPUnityKhi nàoThử lại?
validation400, 422ValidationDữ liệu đầu vào không hợp lệ; details.fields cho biết trường nào.Không
unauthorized401UnauthorizedSai khóa, hoặc token người chơi bị thiếu, hết hạn hay đã bị thu hồi.Không
forbidden403ForbiddenDự án bị tạm ngưng, endpoint chỉ dành cho máy chủ, hoặc bắt buộc HTTPS.Không
plan_limit403PlanLimitĐã chạm giới hạn của gói (người chơi, mục xếp hạng, dung lượng…). Không dữ liệu nào bị xóa.Không
not_found404NotFoundEndpoint, bảng xếp hạng, người chơi hoặc khóa bản lưu không tồn tại.Không
conflict409ConflictThao tác đã được thực hiện, ví dụ phần thưởng đã được nhận trong kỳ này.Không
revision_mismatch409RevisionMismatchBản lưu đám mây đã bị thay đổi trên một thiết bị khác.Không
rate_limited429RateLimitedQuá nhiều yêu cầu mỗi phút, hoặc đang trong thời gian chờ của bảng xếp hạng. Hãy chờ Retry-After giây.Có
quota_exceeded429QuotaExceededTài khoản đã dùng hết hạn mức yêu cầu hằng ngày; hạn mức được đặt lại lúc 00:00 UTC.Không
server_error500ServerErrorĐã xảy ra lỗi trên máy chủ. SDK sẽ tự thử lại các yêu cầu an toàn.Có

Lỗi chỉ có ở SDK#

MãHTTPUnityKhi nàoThử lại?
network—NetworkKhông thể kết nối đến máy chủ.Có
timeout—TimeoutYêu cầu mất nhiều thời gian hơn thời gian chờ tối đa.Có
not_configured—NotConfiguredBase URL, ID dự án hoặc khóa client bị thiếu hoặc không hợp lệ.Không
not_signed_in—NotSignedInLệnh gọi của người chơi trước khi đăng nhập, hoặc sau khi phiên đã hết hạn.Không
signature_invalid—SignatureInvalidCấu hình từ xa không vượt qua bước xác minh và đã không được dùng.Không
parse_error—ParseErrorKhông thể đọc phản hồi (thường do proxy hoặc trang lỗi HTML).Không
link_expired—LinkExpiredTrang liên kết tài khoản đã hết hạn; hãy bắt đầu lại.Không
link_cancelled—LinkCancelledLuồng liên kết tài khoản đã bị hủy.Không

Xử lý lỗi#

Hiển thị message cho nhà phát triển, không phải cho người chơi; hãy rẽ nhánh theo mã lỗi. Chỉ thử lại các lỗi có thể thử lại, và ghi log ID yêu cầu để tìm lại yêu cầu đó trên trang Nhật ký.

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 + ")");
}

Tìm theo tiêu đề trang, đề mục và nội dung.

↑↓ để di chuyển ↵ để mở Esc để đóng