我们如何使用 Google API PHP SDK 调用 Google Business Verification API 中的 fetchVerificationOptions?
P粉976488015
P粉976488015 2024-03-29 12:50:32
0
1
493

我目前正在使用各种 Google API。我已经批准了对 Google Business API 的访问,并成功使用 PHP SDK 对其端点进行了多次调用;甚至调用业务验证 API 中的某些端点。但是,当我请求已定义位置的 fetchVerificationOptions 时,收到 400 错误。

Google\Service\Exception
{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "errors": [
      {
        "message": "Request contains an invalid argument.",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest"
      }
    ]
  }
}

我已验证传入的位置正确,格式为“locations/<LOCATION_ID>”。我在许多其他成功的调用中使用了相同的密钥。

我已经多次阅读了我能找到的关于这个主题的所有文档。该错误让我认为我发送的数据是错误的,但文档对于预期的内容非常清楚 - 语言代码和可选的上下文。在我当前的情况下,该位置是 CUSTOMER_LOCATION_ONLY 业务类型,并且需要通过上下文在此请求中提供 PostalAddress 对象。 SDK 通过为拼图的每一部分提供对象,使这一切看起来更加容易。

这是我的相关 PHP 代码:

$options = new FetchVerificationOptionsRequest;
$options->languageCode = 'en-US';

$context = new ServiceBusinessContext;
$context->setAddress($postalAddress);
$options->setContext($context);

$verificationOptions = GoogleBusinessProfileApi::getVerificationService()->locations->fetchVerificationOptions($locationName, $options);

我已验证上述代码中的 $postalAddressGoogle\Service\MyBusinessVerifications\PostalAddress 的实例,其中包含有效的地址详细信息。

我已验证上述代码中的 $locationName 具有正确的值;我的位置 ID,格式为“locations/<LOCATION_ID>”。

上面代码中的 GoogleBusinessProfileApi::getVerificationService() 返回一个 Google\Service\MyBusinessVerifications 实例,其中包含我的 Google 客户端和所有身份验证内容。我在所有交互中都使用这种方法,并且它们工作得非常正常。另外,该错误并不表明该部件存在问题。

还值得注意的是,在我的 Google API 开发控制台上,我可以看到这些请求传入并以 400 响应结束。不过,这只是指标看起来的情况。我找不到有关请求的更深入、更详细的信息。

我正在寻找任何东西——方向、想法、想法。以前还有其他人处理过这个吗?我错过了一些明显的东西吗?这是我的代码还是 API 本身的问题?有人知道如何在 Google 控制台上更深入地查找这些错误吗?

谢谢!

P粉976488015
P粉976488015

全部回复(1)
P粉564192131

解决方案:

将 PostalAddress 子区域设置为 null。

详细信息:

在同事的帮助下,我们弄清楚了发生了什么。我更改了代码以调用旧的、已弃用的 API 版本。这返回了一条更有用的错误消息,指出美国在其地址中不使用子区域。我在 PostalAddress 对象上进行了设置,因此我将其更改为始终为 null,并且该请求在旧 API 和新 API 上均有效。

这个问题有很多令人沮丧的地方。

  1. 错误消息。“新的和改进的”API 的响应应该告诉我与旧版本一样多的信息,甚至更多。
  2. 文档。我在任何地方都找不到关于此特定请求的美国次区域的任何说明。
  3. 提供帮助。在撰写本文时,在谷歌上搜索有关该主题的任何内容基本上没有返回任何内容。
  4. 子区域。我的系统设置方式实际上是使用 Google 的地点查找来获取有效的 PostalAddress,以确保我们发送给他们的数据有效。在这种情况下,我们使用的地址是从 Google 返回给我们的......带有子区域。次地方拥有县名;我们在美国使用的东西。因此,更没有理由认为这会是问题所在。虽然我不同意错误消息的准确性,但我确实需要它来了解问题所在。

虽然现在这在网络上似乎不是一个大问题,但我确实希望有一天这可以帮助其他人避免浪费时间。

~干杯~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板