NodeMailer: el correo enviado con la cuenta de servicio de Google falla porque "Nombre de usuario y contraseña no aceptados"

Estoy creando un bot de Twitter y estoy implementando un método que me envía un correo electrónico si hay un error. Como ya estoy usando la API de Google para acceder a Google Drive (no tengo ningún problema aquí), decidí usar la cuenta de servicio para enviar el correo electrónico (la consola de Google dice que podría usarse de esa manera)

El método que he creado para enviar el correo electrónico hasta ahora es:

var config = require('./config/mail');
var google = require('./config/google');
var nodemailer = require('nodemailer');

var send = function (args) {
  let transporter = nodemailer.createTransport({
    'service': 'gmail',
    'auth': {
        'type': 'OAuth2',
        'user': google.client_email,
        'serviceClient': google.client_id,
        'privateKey': google.private_key
    }
  });
  transporter.on('token', token => console.log(token));

  let message = {
    'from': `"${config.serverFromName}" <${config.serverFromMail}>`,
    'to': args.to,
    'subject': args.subject,
    'text': args.text,
    'html': `<p>${args.text}</p>`
  };

  transporter.sendMail(message, (err, info) => {
    if (err) {
      console.log('Mail couldn\'t be sent because: ' + err);
    } else {
      console.log('Mail sent');
    }
  });
};

losconfig/google El archivo contiene los datos que Google genera para usted cuando crea una cuenta de servicio.config.serverFromName yconfig.serverFromMail son el nombre y el correo electrónico del remitente (no es lo mismo que el ID de la cuenta de servicio).args contiene el correo electrónico y el contenido

Cuando pruebo el método de envío, recibí el siguiente mensaje en mi consola:

Mail couldn't be sent because: Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials z123sm543690vkd.10 - gsmtp

Sé que el token se está creando correctamente porque el oyente que creé lo está imprimiendo:

{ user: '[email protected]',
  accessToken: 'ya29.ElmIBLxzfU_kkuZeyISeuRBeljmAe7HNTlwuG4K12ysUNo46s-eJ8NkMYHQqD_JrqTlH3yheNc2Aopu9B5vw-ivEqvPR4sTDpWBOg3xUU_4XiJEBLno8FHsg',
  expires: 1500151434603 }

Al buscar en Internet descubrí que puede ser un problema con el alcance de OAuth. Sin embargo, toda la información que se refiere se refiere al uso de ID de clientes, no a cuentas de servicio. Tampoco encuentro esa opción en la consola de desarrolladores de Google.

¿Alguna idea de lo que estoy haciendo mal?

Respuestas a la pregunta(1)

Su respuesta a la pregunta