2015-04-08 2 views
3

Я хочу отправить электронное письмо через API Google без ненужных параметров OAUTH2. У меня есть только access_token и refresh_token этого пользователя.Отправьте электронное письмо с помощью API Google только с токеном доступа

Как отправить электронное письмо через Gmail API через базовый запрос POST в NodeJS, с плагином запроса npm?

+0

Как я могу создать Access_token для пользователя без больших проблем? –

ответ

4

Абрахам прав, но я просто подумал, что дам вам пример.

var request = require('request'); 

server.listen(3000, function() { 
    console.log('%s listening at %s', server.name, server.url); 

    // Base64-encode the mail and make it URL-safe 
    // (replace all "+" with "-" and all "/" with "_") 
    var encodedMail = new Buffer(
     "Content-Type: text/plain; charset=\"UTF-8\"\n" + 
     "MIME-Version: 1.0\n" + 
     "Content-Transfer-Encoding: 7bit\n" + 
     "to: [email protected]\n" + 
     "from: [email protected]\n" + 
     "subject: Subject Text\n\n" + 

     "The actual message text goes here" 
).toString("base64").replace(/\+/g, '-').replace(/\//g, '_'); 

    request({ 
     method: "POST", 
     uri: "https://www.googleapis.com/gmail/v1/users/me/messages/send", 
     headers: { 
     "Authorization": "Bearer 'access_token'", 
     "Content-Type": "application/json" 
     }, 
     body: JSON.stringify({ 
     "raw": encodedMail 
     }) 
    }, 
    function(err, response, body) { 
     if(err){ 
     console.log(err); // Failure 
     } else { 
     console.log(body); // Success! 
     } 
    }); 
}); 

Не забудьте изменить Ресивер и адрес электронной почты отправителя для примера работы.

+2

Ты лучший. – Yagiz

+1

Этот ответ решил мою проблему с недопустимыми учетными данными. Большое спасибо. –

+0

@ShashidharGr Awesome :) Рад, что я мог бы помочь! – Tholle

4

Есть two methods для присоединения OAuth2 access_tokens к запросу API Google.

  • Используя access_token параметр запроса, как это: ?access_token=oauth2-token
  • Использование заголовка HTTP авторизации, как это: Authorization: Bearer oauth2-token

Второй предпочтителен для запросов POST с такой просьбой необработанного HTTP для отправки по электронной почте будет выглядеть примерно так.

POST /gmail/v1/users/me/messages/send HTTP/1.1 
Host: www.googleapis.com 
Authorization: Bearer oauth2Token 
{"raw":"encodedMessage"} 
+0

В чем разница между использованием указателя или OAuth в заголовке авторизации? Пример: '' Авторизация ':' OAuth '+ account.access_token, – Yagiz

+0

'Authorization: Bearer ...' is [OAuth 2] (https://tools.ietf.org/html/rfc6749#section-7.1), ' Авторизация: OAauth ... 'is [OAuth 1] (https://tools.ietf.org/html/rfc5849#section-3.5.1). Хотя я уверен, что есть и другие варианты использования обоих. – abraham