错误可能是由环境设置不正确、软件中的 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 Developers 关系团队成员就可以找到您针对生产环境发出的请求。我们建议您记录响应标头或封装响应错误的异常中包含的request-id,以及比单独的request-id更多的上下文。- 其他信息(例如运行时或解释器版本以及平台)在排查问题时也很有用。
解决问题
现在您已经确定问题并知道了解决方案,接下来您应该在测试账号中进行更改并测试修复结果(这是推荐的做法;但如果错误仅适用于特定生产账号中的数据,请在生产环境中进行)。
后续步骤
现在您已经解决了问题,那么是否注意到有什么方法可以改进代码,从而提前避免出现此类问题呢?
创建一组良好的单元测试有助于显著提高代码质量和可靠性。此外,这还可以加快新的更改的测试过程,确保它们不会破坏以前的功能。良好的错误处理策略也是提供问题排查所需的所有必要数据的关键。