1

전자 메일을 보내는 Gmail API 스크립트를 올바르게 설정하려면 어떻게해야합니까?CRON Node.js Gmail API 스크립트

나는 this method을 사용하려고하는데, this quickstart 가이드에서 스크립트를 작성하기 시작했습니다.

OAuth 2 인증을 사용하지 않고이 작업을 수행 할 수있는 다른 방법이 있습니까? 또는 한 번 유효성을 검사하는 방법?

답변

0

내가 OAuth2를 권한을 부여 JWT를 사용하여 솔루션을 발견했다. 도메인 전체의 위임 서비스 계정을 만들려면 관리자 계정이 있어야합니다. 그런 다음 개발자 콘솔에서 자격 증명으로로드하는 서비스 키 JSON 파일을 다운로드해야합니다.

먼저이 같은 모든 사용자를 가져 오기 :

const google = require('googleapis'); 
const gmail = google.gmail('v1'); 
const directory = google.admin('directory_v1'); 
const scopes = [ 
    'https://www.googleapis.com/auth/gmail.readonly', 
    'https://www.googleapis.com/auth/admin.directory.user.readonly' 
]; 
const key = require('./service_key.json'); 

var authClient = new google.auth.JWT(
    key.client_email, 
    key, 
    key.private_key, 
    scopes, 
    "[email protected]" 
); 

authClient.authorize(function(err, tokens){ 
    if (err) { 
    console.log(err); 
    return; 
    } 

    directory.users.list(
    { 
     auth: authClient, 
     customer: 'my_customer', 
     maxResults: 250, 
     orderBy: 'email' 
    }, (err, resp) => { 
    if (err) { 
     console.log(err); 
     return; 
    } 

    console.log(resp); 
    }); 

}); 

은 그럼 당신은 스레드 목록 (100 요청 당 (페이지))를 가져올 필요가있다 (여기에는 admin 디렉토리 권한이있는 계정을 사용해야합니다). 그리고 각 스레드 객체에 대해 전체 스레드에 대해 get 메소드를 호출해야합니다. Gmail API를 사용하면 이메일을 가져 오려는 사용자 권한을 얻습니다. 요청시 userId 사용 값은 'me'입니다.

0

Gmail API에 대한 모든 요청은 인증 된 사용자에 의해 승인되어야하기 때문에 앱과 함께 Gmail APi를 사용하는 경우 OAuth 2.0을 사용해야합니다. quickstart에 눈에 띄게되면이 API가 작동하도록 자격 증명/Outh 클라이언트 ID를 만들어야합니다.

자세한 내용은 authorize your app with Gmail으로가는 다른 방법이 있습니다. 앱에 대한 "Google 로그인"인증 방법을 제공하는 Google+ Sign-in의 도움으로 해결할 수 있습니다.

+0

이 스크립트를 서버에서 CRON으로 실행하려고합니다. 기본적으로 자동으로 특정 간격으로 실행되어야합니다. 내 이메일에 도메인 전체 위임을 사용하고 회사 도메인 내의 다른 계정에서의 인증을 피할 수 있습니까? – Kunok

0

Gmail의 승인을 요청하는 동안 OAuth 2.0은 하나의 액세스 토큰과 하나의 새로 고침 토큰을 제공합니다. 매번 유효성 검사를하지 않으려면 액세스 토큰을 저장하십시오. 만료 된 후에 새로 고침 토큰을 사용하여 새 액세스 토큰을 가져옵니다 (액세스 토큰은 한 시간마다 만료 됨).

여기이 과정에 대해 읽기 : https://developers.google.com/identity/protocols/OAuth2