>  기사  >  Java  >  Gmail REST API의 \"400 잘못된 요청 실패 전제 조건\" 오류를 해결하는 방법은 무엇입니까?

Gmail REST API의 \"400 잘못된 요청 실패 전제 조건\" 오류를 해결하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 11:02:02987검색

How to Resolve

Gmail REST API: "400 잘못된 요청 실패 전제 조건" 오류 해결

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 잘못된 요청 실패 전제 조건' 오류를 해결할 수 있습니다.

위 내용은 Gmail REST API의 \"400 잘못된 요청 실패 전제 조건\" 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.