Maison >Java >javaDidacticiel >Comment résoudre les erreurs « 400 Bad Request Failed Precondition » dans l'API REST de Gmail ?

Comment résoudre les erreurs « 400 Bad Request Failed Precondition » dans l'API REST de Gmail ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 11:02:021074parcourir

How to Resolve

API REST Gmail : résolution des erreurs « 400 conditions préalables d'échec de requête incorrecte »

Pour la communication de serveur à serveur à l'aide de l'API REST Gmail, vous pouvez rencontrer des erreurs « 400 Bad Request Failed Precondition ». Voici une explication détaillée du problème et comment le résoudre :

Cause :

L'erreur « Échec de la condition préalable » indique qu'une condition préalable pour la demande n'a pas été remplie. Plus précisément, cette erreur se produit lorsque :

  • Les informations d'identification d'un compte de service sont utilisées dans un domaine Google Apps, mais le compte de service n'a pas reçu d'autorité à l'échelle du domaine pour accéder aux données utilisateur.

Étapes de résolution :

  1. Activer l'autorité à l'échelle du domaine pour le compte de service :

    • Connectez-vous à la console d'administration du domaine Google Apps.
    • Accédez à Sécurité > Paramètres avancés > Gérer l'accès client API.
    • Collez l'ID client du compte de service dans le champ « Nom du client ».
    • Accordez un accès complet en saisissant les étendues suivantes dans les « Étendues de l'API » champ :

      https://mail.google.com
      https://www.googleapis.com/auth/gmail.compose
      https://www.googleapis.com/auth/gmail.modify
      https://www.googleapis.com/auth/gmail.readonly
  2. Créer des informations d'identification à l'aide d'un jeton de serveur :

    • Utilisez ce qui suit code pour créer un objet GoogleCredential :

      <code class="java">GoogleCredential credential = new GoogleCredential.Builder()
                                                  .setTransport(httpTransport)
                                                  .setJsonFactory(jsonFactory)
                                                  .setServiceAccountId(serviceAccountUserEmail)    // requesting the token
                                                  .setServiceAccountPrivateKeyFromP12File(new File(SERVER_P12_SECRET_PATH))
                                                  .setServiceAccountScopes(SCOPES)    // see https://developers.google.com/gmail/api/auth/scopes
                                                  .setServiceAccountUser("[email protected]")
                                                  .build();
      credential.refreshToken();</code>
    • Remplacez les espaces réservés par les valeurs suivantes :

      • serviceAccountUserEmail : adresse e-mail du compte de service.
      • SERVER_P12_SECRET_PATH : chemin d'accès au fichier P12 contenant la clé privée.
      • SCOPES : tableau d'étendues de l'API Gmail.
  3. Créer un service Gmail :

    • Utilisez le code suivant pour créer un objet de service Gmail :

      <code class="java">Gmail gmailService = new Gmail.Builder(httpTransport,
                                              jsonFactory,
                                              credential)
                                     .setApplicationName(APP_NAME)
                                     .build();</code>

En suivant ces étapes, vous pouvez vous assurer que votre compte de service dispose des autorisations nécessaires pour accéder aux données utilisateur au sein d'un domaine Google Apps et résoudre les erreurs « 400 Bad Request Failed Precondition Precondition ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn