Отправка Gmail с помощью OAuth 2.0 Playground

Я написал код для отправки почты из моей учетной записи Gmail в другую учетную запись с помощью OAuth2. В OAuth2 нам нужны refreshToken и accessToken, созданные на https://developers.google.com/oauthplayground/ Сгенерированный при этом accessToken истекает через 3600 секунд. Мне нужен код, который будет генерировать accessToken.

Я написал код, в котором я напрямую помещаю refreshToken и acessToken с этого сайта https://developers.google.com/oauthplayground/.

// основной файл кода javascript app.js

async function sendEmail() {
    const nodemailer = require("nodemailer");
    const { google } = require("googleapis");
    const OAuth2 = google.auth.OAuth2;

    const smtpTransport = nodemailer.createTransport({
        service: "gmail",
        auth: {
            type: "OAuth2",
            user: "***************@gmail.com", 
            clientId: "***********.apps.googleusercontent.com",
            clientSecret: "*************",
            refreshToken: "**************",
            accessToken: "********************************"
        }
    });

    const mailOptions = {
        from: "**************@gmail.com",
        to: "**************@gmail.com",
        subject: "Hello",
        generateTextFromHTML: true,
        html: "<h1>TEST MAIL SAYS HELLO</h1>"
    };
       smtpTransport.sendMail(mailOptions, (error, response) => {
         error ? console.log(error) : console.log(response);
         smtpTransport.close();
        });
     } 
 sendEmail();

Это работает нормально, но я хочу, чтобы токен доступа был сгенерирован с использованием некоторого кода.


person Shivam Singhal    schedule 13.07.2019    source источник
comment
Если вы используете веб-приложение, взгляните на this.   -  person Jescanellas    schedule 18.07.2019
comment
Спасибо Jescnallas, но я хочу это для серверных веб-приложений, и я уже читал документы, но не нашел решения.   -  person Shivam Singhal    schedule 19.07.2019
comment
Вы пробовали следовать 4 шагам документации? Не могли бы вы поделиться в своем сообщении тем, что вы пробовали в отношении токенов oauth?   -  person Jescanellas    schedule 22.07.2019


Ответы (1)


Чтобы получить токен доступа и токен обновления, вам нужно будет ввести свои учетные данные в какой-то момент в приложении. Для этого потребуется какая-то передняя часть. На задней панели вы будете использовать пакет auth в библиотеке узлов googleapis, чтобы взять эти учетные данные и сгенерировать нужные вам токены.

Другой способ - создать учетную запись службы, которая будет отправлять электронные письма от имени вашей учетной записи. Какой поток вы хотите, кто-нибудь отправит электронное письмо с помощью Gmail или только вы?

person William Chou    schedule 13.07.2019
comment
Я хочу отправить в Gmail сообщение с благодарностью тем, кто впервые посетил мой сайт. Для этого я хочу сначала попробовать отправить простые сообщения. Помогите мне отправить сообщение Gmail при написании кода на стороне сервера на nodejs. Спасибо - person Shivam Singhal; 19.07.2019