Comment pouvons-nous appeler fetchVerificationOptions dans l'API Google Business Verification à l'aide du SDK PHP de l'API Google ?
P粉976488015
P粉976488015 2024-03-29 12:50:32
0
1
486

J'utilise actuellement diverses API Google. J'ai approuvé l'accès à l'API Google Business et effectué avec succès plusieurs appels à ses points de terminaison à l'aide du SDK PHP, appelant même certains points de terminaison dans l'API d'authentification commerciale ; Cependant, lorsque je demande fetchVerificationOptions avec l'emplacement défini, je reçois une erreur 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"
      }
    ]
  }
}

J'ai vérifié que la localisation transmise est correcte, au format "locations/<LOCATION_ID>". J'ai utilisé la même clé dans de nombreux autres appels réussis.

J'ai lu à plusieurs reprises toute la documentation que je peux trouver sur ce sujet. L'erreur me fait penser que les données que j'envoie sont fausses, mais la documentation est très claire sur ce à quoi s'attendre - le code de langue et le contexte facultatif. Dans mon cas actuel, l'emplacement est un type d'entreprise CUSTOMER_LOCATION_ONLY et l'objet PostalAddress doit être fourni dans cette demande via le contexte. Le SDK rend cela plus facile en fournissant des objets pour chaque pièce du puzzle.

Voici mon code PHP pertinent :

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

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

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

J'ai vérifié que l'instance de $postalAddressGoogleServiceMyBusinessVerificationsPostalAddress dans le code ci-dessus contient des informations d'adresse valides.

J'ai vérifié que $locationName dans le code ci-dessus a la valeur correcte ; mon identifiant de localisation au format "locations/<LOCATION_ID>".

L'instance GoogleBusinessProfileApi::getVerificationService() 返回一个 GoogleServiceMyBusinessVerifications dans le code ci-dessus, qui contient mon client Google et tous les éléments d'authentification. J'utilise cette méthode pour toutes mes interactions et elles fonctionnent parfaitement. De plus, cette erreur n’indique pas un problème avec la pièce.

Il convient également de noter que sur ma console de développement d'API Google, je peux voir ces requêtes arriver et se terminer par une réponse de 400. Cependant, ce n’est que ce à quoi ressemble l’indicateur. Je ne trouve pas d'informations plus approfondies et plus détaillées sur la demande.

Je recherche tout et n'importe quoi - une direction, des idées, des idées. Quelqu'un d'autre a-t-il déjà eu affaire à ce problème ? Est-ce que j'ai raté quelque chose d'évident ? Est-ce un problème avec mon code ou avec l'API elle-même ? Quelqu'un sait-il comment approfondir ces erreurs sur la console Google ?

Merci !

P粉976488015
P粉976488015

répondre à tous(1)
P粉564192131

Solution :

Définissez la sous-région PostalAddress sur null.

Détails :

Avec l'aide de collègues, nous avons compris ce qui se passait. J'ai modifié le code pour appeler l'ancienne version obsolète de l'API. Cela renvoie un message d'erreur plus utile indiquant que les États-Unis n'utilisent pas de sous-zones dans leurs adresses. Je l'ai défini sur l'objet PostalAddress, je l'ai donc modifié pour qu'il soit toujours nul et la requête a fonctionné à la fois sur l'ancienne et la nouvelle API.

Il y a beaucoup de choses frustrantes dans ce problème.

  1. Message d'erreur. La réponse de l'API "nouvelle et améliorée" devrait m'en dire autant que l'ancienne version, sinon plus.
  2. Documentation. Je ne trouve aucune description de la sous-région des États-Unis pour cette demande particulière.
  3. Aide disponible. Au moment de la rédaction de cet article, une recherche Google sur ce sujet n'a pratiquement rien retourné.
  4. Sous-zone. La façon dont mon système est configuré consiste à utiliser la recherche de localisation de Google pour obtenir une adresse postale valide afin de garantir que les données que nous leur envoyons sont valides. Dans ce cas, nous utilisons l'adresse qui nous a été renvoyée par Google... avec des sous-zones. Les sous-localités portent des noms de comté ; c'est quelque chose que nous utilisons aux États-Unis. Il y a donc encore moins de raisons de penser que c'est là le problème. Bien que je ne sois pas d'accord avec l'exactitude du message d'erreur, j'en ai besoin pour comprendre le problème.

Bien que cela ne semble pas être un gros problème sur le Web pour le moment, j'espère qu'un jour cela pourra aider les autres à éviter de perdre leur temps.

~Bravo~

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!