エラーコード

すべてのエラーには安定したコードがあります。SDK も同じコードを使用し(Unity では enum)、リクエストがサーバーに届く前に発生する問題用のコードもいくつか追加されています。

コードのコメントと API 名は、SDK と一致させるため英語のままにしています。

このページの内容

API エラー#

コードHTTPUnity発生条件リトライ可否
validation400, 422Validation入力が無効です。details.fields で該当するフィールドがわかります。不可
unauthorized401Unauthorizedキーが間違っているか、プレイヤートークンがない、期限切れ、または失効しています。不可
forbidden403Forbiddenプロジェクトが停止中、サーバー専用のエンドポイント、または HTTPS が必要です。不可
plan_limit403PlanLimitプランの上限(プレイヤー数、エントリー数、ストレージなど)に達しました。データは削除されません。不可
not_found404NotFound不明なエンドポイント、リーダーボード、プレイヤー、またはセーブキーです。不可
conflict409Conflictすでに完了しています(例: この期間の報酬は受け取り済み)。不可
revision_mismatch409RevisionMismatchクラウドセーブがほかのデバイスで変更されました。不可
rate_limited429RateLimited1 分あたりのリクエストが多すぎるか、リーダーボードのクールダウン中です。Retry-After の秒数だけ待機してください。可
quota_exceeded429QuotaExceededアカウントの 1 日あたりのリクエストクォータを使い切りました。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 で閉じる