X API v2 HTTP 状态码
| Code | Text | Description | Troubleshooting tips |
|---|---|---|---|
| 200 | OK | 请求成功。 | |
| 400 | Bad Request | 请求无效或无法处理。随附的错误消息会进一步说明。未进行认证或包含无效查询参数的请求被视为无效,并将返回此响应。 | 请仔细检查你的 JSON 查询格式。例如,如果规则中包含用于精确匹配或其他运算符的双引号字符,你可能需要使用反斜杠进行转义,以便将其与 JSON 结构本身区分开。 |
| 401 | Unauthorized | 对你的请求进行认证时出现问题。这可能是由于缺失或不正确的认证凭证。在其他未定义的情况下也可能返回此状态。 | 检查你是否使用了正确的认证方法,并确保你的凭证无误。 |
| 403 | Forbidden | 请求已被理解,但被拒绝或不允许访问。随附的错误消息会解释原因。 | 检查你的开发者账号是否包含你正在尝试使用的端点的访问权限。你可能还需要将你的应用加入允许名单(例如 Engagement API 或 Ads API),或注册以获取访问权限。 |
| 404 | Not Found | 请求的 URI 无效,或所请求的资源(例如用户)不存在。 | 检查你是否使用了有效的参数,以及与你正在使用的端点相对应的正确 URI。 |
| 409 | Connection Exception | 当尝试连接到没有规则的过滤流时返回。 | 检查你是否在要连接的流上至少创建了一条规则。过滤流只会返回与活动规则匹配的 Post。若没有任何规则,流将不会返回任何 Post。 |
| 429 | Too Many Requests | 由于应用的速率限制或Post 上限已耗尽而无法处理请求时返回。参见速率限制。 | 检查你所用端点在每个时间窗口允许的请求数。等待该时间窗口重置。拉开请求间隔以避免触发速率限制,或升级到下一个可用的数据方案。 |
| 500 | Internal Server Error | 出现问题。通常为暂时性错误,例如高负载情况下或某个端点暂时出现故障。 | 查看 X API 的状态页面或开发者社区论坛,以了解是否有他人遇到类似问题,或稍后再试。 |
| 501 | Unimplemented | X API 不支持此端点,无法满足该请求。 | |
| 503 | Service Unavailable | X 服务器正常运行,但请求过载。请稍后重试。 | 查看 X API 的状态页面或开发者社区论坛,以了解是否有他人遇到类似问题,或稍后再试。 |
部分错误
错误信息
| 标题 | 类型 | 描述 |
|---|---|---|
| 通用问题 | about:blank | 除 HTTP 状态码之外,没有更多附加信息的通用问题。 |
| 无效请求问题 | https://api.X.com/2/problems/invalid-request | 表示该请求无效的问题。如果请求包含 POST 正文,请确保内容为有效 JSON,并符合 OpenAPI 规范。 |
| 资源未找到问题 | https://api.X.com/2/problems/resource-not-found | 表示指定的 Post、User 等不存在的问题。 |
| 资源未授权问题 | https://api.X.com/2/problems/not-authorized-for-resource | 表示你无权查看特定 Post、User 等的问题。 |
| 客户端禁止问题 | https://api.X.com/2/problems/client-forbidden | 表示你的客户端被禁止发出此请求的问题。 |
| 不允许的资源问题 | https://api.X.com/2/problems/disallowed-resource | 表示所请求的资源违反本 API 原则的问题。 |
| 不支持的认证问题 | https://api.X.com/2/problems/unsupported-authentication | 表示所使用的认证方式不受支持的问题。 |
| 使用量上限问题 | https://api.X.com/2/problems/usage-capped | 表示已超出使用上限的问题。 |
| 连接异常问题 | https://api.X.com/2/problems/streaming-connection | 表示连接出现异常的问题。 |
| 客户端断开连接问题 | https://api.X.com/2/problems/client-disconnected | 你的客户端已断开。 |
| 运营性断开问题 | https://api.X.com/2/problems/operational-disconnect | 因运营原因,你已被断开连接。 |
| 规则上限问题 | https://api.X.com/2/problems/rule-cap | 你已超过规则数量上限。 |
| 规则长度问题 | https://api.X.com/2/problems/rule-length | 基于你的访问级别,你的查询或规则已超过允许的最大字符数。参见 访问级别。 |
| 无效规则问题 | https://api.X.com/2/problems/invalid-rules | 你提交的规则无效。 |
| 重复规则问题 | https://api.X.com/2/problems/duplicate-rules | 你提交的规则重复。 |
疑难排解提示
调试你的代码
调试你的代码
在构建应用时,偶尔遇到错误或异常情况是正常的。以下是一些调试代码的建议:先将问题拆解为更小的部分,以定位具体原因。例如,如果你正在集成 REST 或流式端点,问题可能出在以下任一方面:
- 该端点需要正确的认证。
- 该端点需要有效的参数和请求头。任何筛选规则都应使用正确的运算符并采用合适的语法构建。
- 端点的 URI 必须正确;对于 REST 端点,还必须使用正确的 HTTP 方法。
- 你尝试访问的 data 或资源对你不可用(例如,私有 data 仅对已认证用户可用)。
- 你当前的数据套餐仅允许访问特定端点,并受特定的速率限制。请查看你的开发者门户了解详情。
- 你的代码使用了第三方库来集成该端点。
- 你的代码需要能成功解析端点的响应。
认证问题
认证问题
- 检查你是否使用了该端点要求的正确认证方式。可通过该端点的 API 参考页面确认。
- 检查你的认证凭据是否正确。你可以在开发者门户的应用(Apps)区域(“Details”下)查看或重新生成你的应用密钥和令牌。
- 检查你是否已使用
oauth_nonce、oauth_signature和oauth_timestamp正确为 OAuth 1.0a 请求授权。 - 如果问题仍然存在,考虑使用 OAuth 库、Postman 或 Insomnia 等 REST 客户端,或 xurl。
速率限制与 Post 上限问题
速率限制与 Post 上限问题
当你触及某个端点的速率限制或达到 Post 上限时,可能会返回 429 错误。如果返回特定的“Too many requests”错误,表示你触发了该端点的速率限制。换句话说,你在指定时间段内的请求次数已超过该端点允许的最大值。请注意,速率限制分为按应用和按用户两个层级设定。
- X 应用层级表示在使用 OAuth 2.0 App-Only 时允许的请求次数,此时速率限制在整个应用范围内全局生效。举例来说,如果某个方法在每个速率限制窗口允许 15 次请求,那么它允许你代表你的 X 应用在每个窗口发出 15 次请求。该限制与用户层级限制完全独立。请阅读我们的OAuth 2.0 App-Only指南了解更多信息。
- 用户上下文层级表示在使用 OAuth 1.0a 用户上下文或 OAuth 2.0 授权码(PKCE)时,每个用户 Access Token 可进行的请求次数。举例来说,如果某个方法在每个速率限制窗口允许 15 次请求,那么它允许每个窗口、每个用户 Access Token 进行 15 次请求。阅读我们的指南,了解如何通过 OAuth 1.0a 和 OAuth 2.0 获取用户的 Access Token。
Post 缺失问题
Post 缺失问题
如果你预期某条 Post 会返回,但端点未返回,请按以下步骤排查。
- 检查你的规则,确保使用了正确的运算符和语法。将规则拆分为更小的子句以确认语法无误。
- 如果发送该 Post 的账号在创建时处于受保护状态,则该 Post 不会返回——即使在请求该端点时该账号已设置为公开。你通常可以使用 X 高级搜索进行检查:如果通过 X 高级搜索无法检索到该 Post,则应假定端点也不会返回它。
- 发送该 Post 时你是否已连接到流?请记住,Post 对象中的时间戳为 UTC 时间。如果在该 Post 发送时发生断连,请查看用于回填遗漏数据的恢复与冗余功能。
- 发送该 Post 时你的规则是否已生效?请记住,Post 对象中的时间戳为 UTC 时间。
缓冲区已满导致的断开问题
缓冲区已满导致的断开问题
当你的流无法跟上我们传送数据的速度,且你的应用未能足够快地从流中消费数据时,你可能会遇到以下错误之一:我们允许在一段时间内出现延迟传送,并在我们端为每个流提供临时分段缓冲;但如果你仍未赶上,我们会发起断开连接,以便你在当前时间点重新连接。请注意,这可能会导致数据丢失(对于在缓冲区达到上限而断开时仍位于缓冲区中的数据)。这些情况可能发生在数据出现大幅激增时。通常,我们建议将快速消费数据的缓冲消费流程与后续处理流程解耦。如果你是使用 v1.1 端点的企业客户,可在我们的连接文章,以及关于消费流式数据的此处和此处了解如何优化你的应用以防止此类断开。针对因断开而错过的 Post,我们提供多种补救工具,包括以下所列。请注意,以下工具仅适用于企业级访问的 v1.1 端点。
获取帮助
发布问题前
- 在 X 开发者文档中搜索与你的问题相关的信息
- 在社区论坛中查找其他开发者提出的类似问题
- 查看社区论坛指南
发布问题时,请务必包含以下信息
- 问题描述
- 发起的 API 调用(如可行,请包含请求头 headers)
- 返回的 X 响应(包括任何错误消息)
- 你的预期结果
- 已执行的故障排查步骤列表
- 复现该问题所需的步骤列表
- 如适用,问题发生的时间范围
- 如适用,应用 ID、Post ID 等
- 相关的代码示例或截图