Wie können wir fetchVerificationOptions in der Google Business Verification API mithilfe des Google API PHP SDK aufrufen?
P粉976488015
P粉976488015 2024-03-29 12:50:32
0
1
529

Ich verwende derzeit verschiedene Google APIs. Ich habe den Zugriff auf die Google Business API genehmigt und mithilfe des PHP SDK mehrere Endpunkte erfolgreich aufgerufen. Außerdem habe ich einige Endpunkte in der Business Authentication API aufgerufen. Wenn ich jedoch fetchVerificationOptions mit dem definierten Speicherort anfordere, erhalte ich einen 400-Fehler.

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"
      }
    ]
  }
}

Ich habe überprüft, dass der eingegebene Standort im Format „Standorte/<LOCATION_ID>“ korrekt ist. Ich habe denselben Schlüssel bei vielen anderen erfolgreichen Anrufen verwendet.

Ich habe die gesamte Dokumentation, die ich zu diesem Thema finden kann, mehrmals gelesen. Der Fehler lässt mich denken, dass die Daten, die ich sende, falsch sind, aber die Dokumentation zeigt sehr deutlich, was mich erwartet – den Sprachcode und den optionalen Kontext. In meinem aktuellen Fall ist der Standort ein Geschäftstyp CUSTOMER_LOCATION_ONLY und das PostalAddress-Objekt muss in dieser Anfrage über den Kontext bereitgestellt werden. Das SDK macht dies einfacher, indem es Objekte für jedes Puzzleteil bereitstellt.

Das ist mein relevanter PHP-Code:

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

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

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

Ich habe überprüft, dass die Instanz von $postalAddressGoogleServiceMyBusinessVerificationsPostalAddress im obigen Code gültige Adressdetails enthält.

Ich habe überprüft, dass $locationName im obigen Code den richtigen Wert hat; meine Standort-ID im Format „Standorte/<LOCATION_ID>“.

Die GoogleBusinessProfileApi::getVerificationService() 返回一个 GoogleServiceMyBusinessVerifications-Instanz im obigen Code, die meinen Google-Client und alle Authentifizierungsmaterialien enthält. Ich verwende diese Methode für alle meine Interaktionen und sie funktioniert einwandfrei. Außerdem weist dieser Fehler nicht auf ein Problem mit dem Teil hin.

Bemerkenswert ist auch, dass ich auf meiner Google API-Entwicklungskonsole sehen kann, wie diese Anfragen eingehen und mit einer 400-Antwort enden. Allerdings sieht der Indikator nur so aus. Ich kann keine tiefergehenden, detaillierteren Informationen zu der Anfrage finden.

Ich bin auf der Suche nach allem und jedem – Richtung, Ideen, Ideen. Hat sich sonst noch jemand damit beschäftigt? Übersehe ich etwas Offensichtliches? Ist das ein Problem mit meinem Code oder der API selbst? Weiß jemand, wie man diese Fehler in der Google Console genauer untersuchen kann?

Danke!

P粉976488015
P粉976488015

Antworte allen(1)
P粉564192131

解决方案:

将 PostalAddress 子区域设置为 null。

详细信息:

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

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

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

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

~干杯~

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage