Send email using Google API with only access token

前端 未结 2 1568
予麋鹿
予麋鹿 2020-12-09 23:18

I want to send an email through Google API without the unnecessary OAUTH2 parameters. I only have the access_token and the refresh_token of that user.

How can I send

相关标签:
2条回答
  • 2020-12-10 00:09

    There are two methods for attaching OAuth2 access_tokens to a Google API request.

    • Using the access_token query parameter like this: ?access_token=oauth2-token
    • Using the HTTP Authorization header like this: Authorization: Bearer oauth2-token

    The second one is prefered for POST requests so the raw HTTP request for sending an email would look something like this.

    POST /gmail/v1/users/me/messages/send HTTP/1.1
    Host: www.googleapis.com
    Authorization: Bearer oauth2Token
    {"raw":"encodedMessage"}
    
    0 讨论(0)
  • 2020-12-10 00:14

    abraham is correct, but I just thought I'd give you an example.

    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: reciever@gmail.com\n" +
            "from: sender@gmail.com\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!
          }
        });
    });
    

    Don't forget to change the reciever and sender email address for the example to work.

    0 讨论(0)
提交回复
热议问题