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