使用英语阅读

通过


处理 PlayFab 错误

在 PlayFab Services SDK 调用中,异步 API调用可能会在几个不同的点上失败。 处理这些错误因操作失败的方式和时间而异。

与 GDK 中的大多数异步调用一样,PlayFab API 遵循相同的常规调用模式:

  1. PF*Async(...) 调用,开始异步操作。
  2. (可选)XAsyncGetStatus(...) 用于跟踪异步操作状态的调用。 可用于等待异步操作完成。
  3. PF*GetResultSize(...) 以字节为单位检索结果有效负载的大小。
  4. PF*GetResult(...) 以检索异步操作的结果。

其中每个调用都可能因不同原因而失败。 以下部分详细说明了最常遇到的失败类型。

同步失败

同步失败是指初始 PF*异步 调用返回错误。 这种类型的失败通常表示编程错误 - 无效的调用模式、无效参数等。 应在开发过程中解决这些类型的错误。 大多数其他同步故障都是致命故障,无法轻松处理(例如 E_OUTOFMEMORY)。

异步失败

异步失败是指任何 XAsyncGetStatusPF*GetResultSizePF*GetResult失败。 异步故障的范围更广。 除了由于参数无效而导致的错误之外,异步故障还分为以下各节中更详细介绍的几个类别。

令牌验证失败

在启动 PlayFab 服务调用之前,SDK 会执行客户端验证,以确保所需的身份验证令牌可用并且仍然有效。 如果此检查失败,则返回以下错误之一:

  • E_PF_NOENTITYTOKEN (0x89235411):指示与提供的 PFEntityHandle 关联的 EntityToken 已过期。 有关如何处理这种情况的详细信息,请参阅 处理令牌过期

  • E_PF_NOSECRETKEY (0x89235412) 指示提供的 PFEntityHandle 没有关联的 SecretKey。 缺少 SecretKey 通常意味着你已尝试使用无效的实体类型发出请求。 需要 SecretKey 的 API 只能由游戏实体调用。 请注意,SecretKey API 面向服务器或管理员方案,在 GDK 中不可用。

PlayFab 服务失败

如果 SDK 成功发出 PlayFab 服务请求,该服务仍可能返回错误。 有两种广泛的 PlayFab 服务错误类型:全局 错误,可以从任何 PlayFab API 返回,具体 是特定于 API 的。 以下是 全局 失败的完整列表:

  • E_PF_API_CLIENT_REQUEST_RATE_LIMIT_EXCEEDED (0x892354dd)
  • E_PF_API_CONCURRENT_REQUEST_LIMIT_EXCEEDED (0x8923556b)
  • E_PF_CONCURRENT_EDIT_ERROR (0x8923549b)
  • E_PF_DATA_UPDATE_RATE_EXCEEDED (0x89235534)
  • E_PF_DOWNSTREAM_SERVICE_UNAVAILABLE (0x89235495)
  • E_PF_INVALID_API_ENDPOINT (0x89235499)
  • E_PF_OVER_LIMIT (0x892354ec)
  • E_PF_SERVICE_UNAVAILABLE (0x89235491)
  • E_PF_ACCOUNT_BANNED (0x89235423)
  • E_PF_ACCOUNT_DELETED (0x89235557)
  • E_PF_ACCOUNT_NOT_FOUND (0x89235422)
  • E_PF_API_REQUESTS_DISABLED_FOR_TITLE (0x8923553c)
  • E_PF_INVALID_CONTENT_TYPE (0x892354a6)
  • E_PF_INVALID_ENTITY_TYPE (0x8923558a):
  • E_PF_INVALID_PARAMS (0x89235421)
  • E_PF_INVALID_REQUEST (0x89235468)
  • E_PF_INVALID_TITLE_ID (0x89235425)
  • E_PF_NOT_AUTHENTICATED (0x8923546b)
  • E_PF_NOT_AUTHORIZED (0x89235478)
  • E_PF_NOT_AUTHORIZED_BY_TITLE (0x892354d5)
  • E_PF_PROFILE_DOES_NOT_EXIST (0x8923553f)
  • E_PF_TITLE_DELETED (0x89235570)
  • E_PF_UNKNOWN_ERROR (0x89235448)

有关服务故障重试指南的详细信息,请参阅 PlayFab 服务全局 API 方法错误代码

限制失败

限制错误是服务故障的一个类别,由 HTTP 429 状态代码指示。 当 PlayFab 服务返回限制错误时,这意味着客户端在特定时间段内调用终结点的频率太高。 当 SDK 收到限制错误时,它会在小型回退后自动重试请求。 如果请求在配置的重试窗口内仍未成功,则错误将传递给标题。 可以通过调用 PFSetHttpRetrySettings 来配置 SDK 重试设置。

网络故障

如果基础网络堆栈返回错误,则该错误将传递给客户端。 根据网络故障的不同,可能会发生各种错误。 大多数网络错误都会导致 E_HC_NO_NETWORK (0x89235006)

其他错误详细信息和跟踪

除了 HRESULT,PlayFab 服务有时还会返回 errorDetails 字符串。 此字符串不会向最终客户端公开,但在开发和调试期间可能很有用。 若要了解如何启用详细跟踪以查看返回的 errorDetails 字符串,请参阅 跟踪指南。"。

参考

[Microsoft 游戏开发工具包中的错误处理][/gaming/gdk/_content/gc/system/overviews/error-handling]