Отправка почты через Gmail Служб Google с использованием делегирования домена домена службы в nodejs

Я уже два дня читаю учебники и вижу примеры, но безуспешно. Я хочу отправить электронное письмо, используя учетную запись Google Apps Gmail в среде NodeJS, однако получаю400 ответ от Google API:

{[Error: Bad Request]
code: 400,
errors:
  [{ 
    domain: 'global',
    reason: 'failedPrecondition',
    message: 'Bad Request'
  }]
}

Вот что я сделал до сих пор:

Создал проект в Google Cloud PlatformСоздан сервисный аккаунтВключеноDomain Wide Delegation для служебного аккаунтаСкачал ключ от учетной записи службы вJSON форматAPI Manager > Credentials Я создалOAuth 2.0 client IDВключен Gmail API для проекта

В консоли администратора Google Apps:

ВSecurity > Advanced Settings > Manage API client access я добавилClient ID от шага4 вышеЯ добавил все возможные области дляClient ID

Вот код, который пытается отправить электронное письмо:

const google = require('googleapis');
const googleKey = require('./google-services.json');
const jwtClient = new google.auth.JWT(googleKey.client_email, null, googleKey.private_key, ['https://www.googleapis.com/auth/gmail.send'], null);

jwtClient.authorize((err, tokens) => {
  if (err) {
    console.err(err);
    return;
  }
  console.log('Google auth success')
  var gmail = google.gmail({version: 'v1', auth: jwtClient})
  var raw = <build base64 string according to RFC 2822 specification>

  var sendMessage = gmail.users.messages.send({
    auth: jwtClient,
    userId: '[email protected]',
    message: {
      raw: raw
    }
  }, (err, res) => {
    if (err) {
      console.error(err);
    } else {
      console.log(res);
    }
});

Я могу видетьGoogle auth success сообщение и запрос отправляются с правильно инициализированным токеном:

headers:
{ Authorization: 'Bearer ya29.CjLjAtVjGNJ8fcBnMSS8AEXAvIm4TbyNTc6g_S99HTxRVmzKpWrAv9ioTI4BsLKXW7uojQ',
 'User-Agent': 'google-api-nodejs-client/0.9.8',
 host: 'www.googleapis.com',
 accept: 'application/json',
 'content-type': 'application/json',
 'content-length': 2 }

Но все же ответ400

Ответы на вопрос(1)

Ваш ответ на вопрос