不正确的环境设置、软件中的 bug 或用户的无效输入都会导致出现错误。无论来源如何,您都需要排查问题,并修复代码或添加逻辑来处理用户错误。本指南讨论了在排查 Google Ads API 错误时的一些最佳实践。
确保连接
确保您可以访问 Google Ads API 并已进行正确的设置。如果您的响应返回任何 HTTP 错误,请确保谨慎处理这些错误,并确保可以通过代码访问您要使用的服务。
您的凭据会嵌入到您的请求中,以便服务对您进行身份验证。熟悉 Google Ads API 请求和响应的结构,尤其是在您打算不使用客户端库来处理调用时。每个客户端库都附带了有关如何在配置文件中添加凭据的具体说明(请参阅客户端库的 README 文件)。
确认您使用的是正确凭据。我们的快速入门指南将引导您完成获取所需正确数据集的过程。例如,以下响应失败情况表明用户发送了无效的身份验证凭据:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
如果您在按照上述步骤操作后仍然遇到问题,那么应该深入了解如何对 Google Ads API 错误进行问题排查。
确定问题
Google Ads API 通常会将错误报告为 JSON 失败对象,其中包含响应中的错误列表。这些对象会提供一个错误代码,以及一条详细说明错误原因的消息。它们是您了解问题可能出在何处的第一手信号。
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword.match_type'.",
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 1 }
]
}
}
]
}
我们所有的客户端库都会抛出封装了响应中错误的异常。捕获这些异常并在日志或问题排查屏幕中输出消息是一个不错的开始。将此信息与应用中的其他已记录事件相集成,可以很好地了解可能触发问题的原因。在日志中发现错误后,您需要弄清楚该错误意味着什么。
研究错误
请参阅我们的常见错误文档,其中涵盖了最常遇到的错误。其中介绍了错误消息、相关 API 参考以及如何避免或处理该错误。
如果我们的常见错误文档未明确提及该错误,请参阅我们的参考文档并查找错误字符串。
搜索我们的支持渠道,与其他分享 API 使用体验的开发者交流。其他人可能已经遇到并解决了您遇到的问题。
如需有关排查验证或账号限额问题的帮助,请访问 Google Ads 帮助中心 - Google Ads API 沿用了核心 Google Ads 产品的规则和限制。
在排查应用问题时,博文有时会是不错的参考资料。
如果您遇到任何未记录的错误,请与支持团队联系。
在研究错误之后,接下来应该确定错误的根本原因。
找出原因
查看异常消息可确定错误的原因。在查看响应后,请查看请求,了解产生错误的可能原因。某些 Google Ads API 错误消息会在 GoogleAdsError 的 location 字段中包含 fieldPathElements,指明错误发生在请求中的哪个位置。例如:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 0 },
{ "fieldName": "create" },
{ "fieldName": "keyword" }
]
}
}
]
}
在排查问题时,您可能会发现应用向 API 提供了错误的信息。我们强烈建议您使用集成式开发环境 (IDE) 调试器来设置断点、逐行单步执行代码,并在发送之前检查构建的请求载荷。
仔细检查,确保请求与您的应用输入内容一致(例如,可能无法将广告系列名称添加到请求中)。请确保您发送的字段掩码与您要进行的更新相匹配,因为 Google Ads API 支持稀疏更新。在 mutate 请求的字段掩码中省略某个字段表示 API 应保持该字段不变。如果您的应用检索某个对象、进行更改并将其发回,则您可能正在写入不支持更新的字段。请查看参考文档中的字段说明,了解在何时或是否可以更新该字段。
如何获取帮助
您可能无法自行找出并解决问题。您可以与支持团队联系以寻求帮助。
请尽量在查询中提供详细信息。推荐项目包括:
- 经过整理的 JSON 请求和响应。请务必移除敏感信息,例如您的 OAuth 访问令牌、刷新令牌、开发者令牌(如果仍包含在旧版请求标头中)和客户 ID。
- 代码段。如果您遇到与特定语言相关的问题,或者需要有关 API 使用方面的帮助,可以提供代码段来解释您的操作。
request-id。这样一来,如果您的请求是针对生产环境提出的,Google 开发技术推广团队的成员就可以找到您的请求。我们建议您记录响应标头或封装响应错误的异常中包含的request-id,以及比request-id更丰富的上下文。- 在排查问题时,运行时或解释器版本和平台等其他信息也可能很有用。
解决问题
现在您已经确定问题并知道了解决方案,接下来您应该在测试账号中进行更改并测试修复结果(这是推荐的做法;但如果错误仅适用于特定生产账号中的数据,请在生产环境中进行)。
后续步骤
现在您已经解决了问题,那么是否注意到有什么方法可以改进代码,从而提前避免出现此类问题呢?
创建一组出色的单元测试有助于大幅提高代码质量和可靠性。此外,这还可以加快新的更改的测试过程,确保它们不会破坏以前的功能。良好的错误处理策略对于显示所有必要的数据以进行问题排查也至关重要。