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 $postalAddress
是 GoogleServiceMyBusinessVerificationsPostalAddress
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()
返回一個(gè) 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!
將 PostalAddress 子區(qū)域設(shè)置為 null。
在同事的幫助下,我們弄清楚了發(fā)生了什么。我更改了代碼以調(diào)用舊的、已棄用的 API 版本。這返回了一條更有用的錯(cuò)誤消息,指出美國(guó)在其地址中不使用子區(qū)域。我在 PostalAddress 對(duì)象上進(jìn)行了設(shè)置,因此我將其更改為始終為 null,并且該請(qǐng)求在舊 API 和新 API 上均有效。
這個(gè)問(wèn)題有很多令人沮喪的地方。
雖然現(xiàn)在這在網(wǎng)絡(luò)上似乎不是一個(gè)大問(wèn)題,但我確實(shí)希望有一天這可以幫助其他人避免浪費(fèi)時(shí)間。
~干杯~