1

Gmail API를 사용하고 있으며 회사의 모든 사용자로부터 이메일을 가져 오려고합니다. 내가 같은 코드를 실행할 때 :Gmail API 도메인 위임

function runAPI(auth) { 
    var gmail = google.gmail('v1'); 
    gmail.users.threads.list({auth: auth, userId: '108800016305523828361'},'',function(err, response){ 
    if (err) { 
     console.log("The API returned an error: " + err); 
     return; 
    } 
    var threads = response.threads; 
    console.log(threads); 
    }) 
} 

내가 얻을 오류 :

나는이 한 관리 콘솔에서

The API returned an error: Error: Delegation denied for [email protected]

: 나는에서 ID를 사용하는 클라이언트 이름으로

enter image description here

client_secret.json 파일 범위에 대해서는 모든 권한을주었습니다.

Gmail API에 도메인 위임을 올바르게 설정하려면 어떻게해야합니까?

답변

1

셋업 코드에서하지만, 괜찮습니다 당신은 잘못하고있다.

이 코드 : 특별히

gmail.users.threads.list({auth: auth, userId: '108800016305523828361'},'',function(err, response)

.

userId를 사용하면 Gmail이 API를 호출하기 전에 "나"그러나 당신이에 설명 된대로 액세스하려는 Gmail 사용자에 대한 OAuth2를 자격 증명을 검색하는 코드에서 서비스 계정 "JWT 흐름"을 사용할 필요가 있어야한다 Preparing to make an authorized API call 서비스 계정 도메인 위임 관리. doc.

는 특히이 (당신이 요청에 setServiceAccountUser([email protected]) 기능에 액세스 할 도메인에서 사용자의 이메일을 설정 ) 원하는 사용자에 대한 자격을 얻기 위해 요청하는 서비스 계정의 개인 키를 사용합니다. 그런 다음 Gmail API를 호출 할 때 GoogleCredential을 사용할 수 있습니다.

+0

관련 문서가 있습니까? – Kunok

+1

위에 제공된 '승인 된 API 호출 준비'링크 만. –

+0

메소드'setServiceAccountUser ([email protected])'이 Node.js에서 지원되지 않습니까? – Kunok

-1

Gmail API에 도메인 위임을 올바르게 설정하려면 어떻게해야합니까?

Google의 documentation이이 문제를 해결하는 데 도움이 될 것으로 생각합니다. 다음 단계에 따라 도메인 전체 권한을 위임하십시오.

  1. Google Apps 도메인의 관리 콘솔로 이동합니다.

  2. 컨트롤 목록에서 보안을 선택하십시오. 보안이 표시되지 않으면 페이지 하단의 회색 막대에서 컨트롤을 더 선택하고을 클릭 한 다음 컨트롤 목록에서 보안을 선택하십시오. 컨트롤이 표시되지 않으면 도메인의 관리자로 로그인했는지 확인하십시오.

  3. 선택 는 옵션 목록에서 더 다음 고급 설정을을 표시합니다.

  4. 선택

  5. 인증 섹션의 API 클라이언트 액세스을 관리합니다. 클라이언트 이름 필드에
  6. 서비스 계정의 클라이언트 ID를 입력합니다. 서비스 계정 페이지에서 서비스 계정의 클라이언트 ID를 찾을 수 있습니다.

  7. 하나 이상의 API 범위 필드에 응용 프로그램에 대한 액세스 권한이 부여되어야하는 범위 목록을 입력하십시오. 예를 들어, 애플리케이션에 Google 드라이브 API 및 Google 캘린더 API에 대한 도메인 전체의 액세스가 필요한 경우 https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar을 입력하십시오.

    이 경우 scope for Gmail API을 사용하십시오.

  8. 클릭 을 입력하십시오.

    error 403 or Delegation denied for <user email>에 대한 자세한 내용은

이 관련 SO 질문을 확인 :

+0

기본적으로 잘못된 클라이언트 ID를 사용하고 있다고 제안 하시겠습니까? – Kunok

+1

제대로 처리하면 해당 프로세스를 다시 한 번 확인하십시오. 나는 또한 당신이 그 문제에 대한 아이디어를 줄 수도 있기 때문에 연결된 질문을 확인하는 것이 좋습니다 :) – KENdi

+0

프로젝트에 대한 서비스 계정을 만들고 관리 콘솔에서 클라이언트 ID를 사용하면 여전히 동일한 오류가 발생합니다. '대표단은 k **** uno @ ul ***** vel.com'을 거절했다. 연결 한 품질 보증을 확인했지만 이러한 답변이 내 경우에 맞지 않습니다. 오류가 내 앱이 아니라 내 이메일을 거부한다고 말하면 내 회사 이메일 앱에서 회사의 Google 앱에있는 모든 데이터에 액세스 할 수 있도록 이메일을 인증 할 수 있습니까? – Kunok