Rumah > Soal Jawab > teks badan
Saya sedang menggunakan pelbagai API Google. Saya telah meluluskan akses kepada Google Business API dan berjaya membuat berbilang panggilan ke titik akhirnya menggunakan PHP SDK malah memanggil beberapa titik akhir dalam Business Authentication API. Walau bagaimanapun, apabila saya meminta fetchVerificationOptions dengan lokasi yang ditentukan, saya menerima ralat 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" } ] } }
Saya telah mengesahkan bahawa lokasi yang dihantar adalah betul, dalam format "lokasi/<LOCATION_ID>". Saya telah menggunakan kunci yang sama dalam banyak panggilan lain yang berjaya.
Saya telah membaca beberapa kali semua dokumentasi yang saya dapati mengenai topik ini. Ralat membuatkan saya berfikir bahawa data yang saya hantar adalah salah, tetapi dokumentasinya sangat jelas tentang perkara yang diharapkan - kod bahasa dan konteks pilihan. Dalam kes semasa saya, lokasi ialah jenis perniagaan CUSTOMER_LOCATION_ONLY dan objek PostalAddress perlu disediakan dalam permintaan ini melalui konteks. SDK menjadikannya kelihatan lebih mudah dengan menyediakan objek untuk setiap bahagian teka-teki.
Ini kod PHP saya yang berkaitan:
$options = new FetchVerificationOptionsRequest; $options->languageCode = 'en-US'; $context = new ServiceBusinessContext; $context->setAddress($postalAddress); $options->setContext($context); $verificationOptions = GoogleBusinessProfileApi::getVerificationService()->locations->fetchVerificationOptions($locationName, $options);
Saya telah mengesahkan bahawa contoh $postalAddress
是 GoogleServiceMyBusinessVerificationsPostalAddress
dalam kod di atas mengandungi butiran alamat yang sah.
Saya telah mengesahkan bahawa $locationName
dalam kod di atas mempunyai nilai yang betul; ID lokasi saya dalam format "lokasi/<LOCATION_ID>".
Instance GoogleBusinessProfileApi::getVerificationService()
返回一个 GoogleServiceMyBusinessVerifications
dalam kod di atas, yang mengandungi klien Google saya dan semua bahan pengesahan. Saya menggunakan kaedah ini untuk semua interaksi saya dan ia berfungsi dengan baik. Juga, ralat ini tidak menunjukkan masalah dengan bahagian tersebut.
Turut diperhatikan ialah pada konsol pembangunan API Google saya, saya dapat melihat permintaan ini masuk dan berakhir dengan 400 respons. Walau bagaimanapun, ini hanya rupa penunjuk. Saya tidak dapat mencari maklumat yang lebih mendalam dan lebih terperinci tentang permintaan itu.
Saya sedang mencari apa sahaja dan segala-galanya - hala tuju, idea, idea. Adakah orang lain pernah menangani perkara ini sebelum ini? Adakah saya kehilangan sesuatu yang jelas? Adakah ini masalah dengan kod saya atau API itu sendiri? Adakah sesiapa tahu bagaimana untuk mengkaji lebih mendalam tentang ralat ini pada Konsol Google?
Terima kasih!
P粉5641921312024-03-30 11:11:43
Tetapkan subwilayah PostalAddress kepada null.
Dengan bantuan daripada rakan sekerja, kami mengetahui perkara yang sedang berlaku. Saya menukar kod untuk memanggil versi API lama yang tidak digunakan lagi. Ini mengembalikan mesej ralat yang lebih berguna yang menyatakan bahawa Amerika Syarikat tidak menggunakan subzon dalam alamatnya. Saya menetapkannya pada objek PostalAddress jadi saya menukarnya kepada sentiasa batal dan permintaan berfungsi pada API lama dan baharu.
Terdapat banyak perkara yang mengecewakan tentang isu ini.
Walaupun ini nampaknya tidak menjadi masalah besar di web sekarang, saya berharap satu hari ini dapat membantu orang lain mengelak daripada membuang masa mereka.
~Cheers~