2015-04-08 1 views
3

Je souhaite envoyer un e-mail via l'API Google sans les paramètres inutiles OAUTH2. J'ai seulement le access_token et le refresh_token de cet utilisateur. Comment puis-je envoyer un e-mail via l'API Gmail via une requête POST de base dans NodeJS, avec le plugin Request npm?Envoyer un e-mail à l'aide de l'API Google avec le seul jeton d'accès

+0

Comment puis-je générer Access_token pour l'utilisateur sans tracas massifs? –

Répondre

4

abraham est correct, mais je pensais juste vous donner un exemple.

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! 
     } 
    }); 
}); 

Ne pas oublier de changer l'adresse e-mail et de l'expéditeur pour recepteur l'exemple de travailler.

+2

Vous êtes le meilleur. – Yagiz

+1

Cette réponse a résolu mon problème avec des informations d'identification non valides. Merci beaucoup. –

+0

@ShashidharGr Awesome :) Content de pouvoir aider! – Tholle

4

Il existe two methods pour attacher OAuth2 access_tokens à une demande API Google.

  • Utilisation du paramètre de requête access_token comme ceci: ?access_token=oauth2-token
  • En utilisant l'en-tête d'autorisation HTTP comme ceci: Authorization: Bearer oauth2-token

Le second est préféré pour les requêtes POST si la requête HTTP première pour l'envoi d'un e-mail ressemblerait à quelque chose comme ça.

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

Quelle est la différence entre l'utilisation de Bearer ou OAuth dans l'en-tête Authorization? Exemple: ''Autorisation': 'OAuth' + compte.access_token, – Yagiz

+0

'Autorisation: Au porteur ...' est [OAuth 2] (https://tools.ietf.org/html/rfc6749#section-7.1),' Autorisation: OAauth ... 'est [OAuth 1] (https://tools.ietf.org/html/rfc5849#section-3.5.1). Bien que je suis sûr qu'il y a d'autres utilisations pour les deux. – abraham