ホームページ  >  記事  >  Java  >  Gmail REST API の「400 Bad Request Failed Precondition」エラーを解決する方法

Gmail REST API の「400 Bad Request Failed Precondition」エラーを解決する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 11:02:02987ブラウズ

How to Resolve

Gmail REST API: 「400 Bad Request Failed Precondition」エラーの解決

Gmail REST API を使用したサーバー間通信の場合、 「400 Bad Request Failed Precondition」エラーが発生する場合があります。この問題とその解決方法の詳細な説明は次のとおりです。

原因:

「前提条件の失敗」エラーは、リクエストの前提条件が満たされていないことを示します。具体的には、このエラーは次の場合に発生します。

  • サービス アカウントの認証情報が Google Apps ドメイン内で使用されているが、サービス アカウントにはユーザー データにアクセスするためのドメイン全体の権限が付与されていません。

解決手順:

  1. サービス アカウントのドメイン全体の権限を有効にする:

    • Google Apps ドメイン管理コンソールにログインします。
    • [セキュリティ] > に移動します。詳細設定 > API クライアント アクセスを管理します。
    • サービス アカウントのクライアント ID を [クライアント名] フィールドに貼り付けます。
    • [API スコープ] に次のスコープを入力してフル アクセスを付与します。フィールド:

      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. サーバー トークンを使用して資格情報を作成:

    • 次を使用します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>
    • プレースホルダーを次の値に置き換えます:

      • serviceAccountUserEmail: サービス アカウントのメール アドレス。
      • SERVER_P12_SECRET_PATH: 秘密キーを含む P12 ファイルへのパス。
      • SCOPES: Gmail API スコープの配列。
  3. Gmail サービスの作成:

    • 次のコードを使用して Gmail サービス オブジェクトを作成します:

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

次の手順に従うことで、Google Apps ドメイン内のユーザー データにアクセスするために必要な権限がサービス アカウントにあることを確認し、「400 Bad Request Failed Precondition」エラーを解決できます。

以上がGmail REST API の「400 Bad Request Failed Precondition」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。