我目前正在使用各種 Google API。我已經(jīng)批準了對 Google Business API 的訪問,并成功使用 PHP SDK 對其端點進行了多次調用;甚至調用業(yè)務驗證 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" } ] } }
我已驗證傳入的位置正確,格式為“l(fā)ocations/<LOCATION_ID>”。我在許多其他成功的調用中使用了相同的密鑰。
我已經(jīng)多次閱讀了我能找到的關于這個主題的所有文檔。該錯誤讓我認為我發(fā)送的數(shù)據(jù)是錯誤的,但文檔對于預期的內容非常清楚 - 語言代碼和可選的上下文。在我當前的情況下,該位置是 CUSTOMER_LOCATION_ONLY 業(yè)務類型,并且需要通過上下文在此請求中提供 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);
我已驗證上述代碼中的 $postalAddress
是 Google\Service\MyBusinessVerifications\PostalAddress
的實例,其中包含有效的地址詳細信息。
我已驗證上述代碼中的 $locationName
具有正確的值;我的位置 ID,格式為“l(fā)ocations/<LOCATION_ID>”。
上面代碼中的 GoogleBusinessProfileApi::getVerificationService()
返回一個 Google\Service\MyBusinessVerifications
實例,其中包含我的 Google 客戶端和所有身份驗證內容。我在所有交互中都使用這種方法,并且它們工作得非常正常。另外,該錯誤并不表明該部件存在問題。
還值得注意的是,在我的 Google API 開發(fā)控制臺上,我可以看到這些請求傳入并以 400 響應結束。不過,這只是指標看起來的情況。我找不到有關請求的更深入、更詳細的信息。
我正在尋找任何東西——方向、想法、想法。以前還有其他人處理過這個嗎?我錯過了一些明顯的東西嗎?這是我的代碼還是 API 本身的問題?有人知道如何在 Google 控制臺上更深入地查找這些錯誤嗎?
謝謝!
將 PostalAddress 子區(qū)域設置為 null。
在同事的幫助下,我們弄清楚了發(fā)生了什么。我更改了代碼以調用舊的、已棄用的 API 版本。這返回了一條更有用的錯誤消息,指出美國在其地址中不使用子區(qū)域。我在 PostalAddress 對象上進行了設置,因此我將其更改為始終為 null,并且該請求在舊 API 和新 API 上均有效。
這個問題有很多令人沮喪的地方。
雖然現(xiàn)在這在網(wǎng)絡上似乎不是一個大問題,但我確實希望有一天這可以幫助其他人避免浪費時間。
~干杯~