我已使用gmail API授权了一个小型节点应用。我成功地得到了回应。例如,我可以使用users.settings.sendAs.list()查看我的电子邮件签名

但是,当我尝试更改设置(在这种情况下再次是签名)时,我得到的响应为空。因此,只要我可以擦除我在gmail中手动添加的签名,更新就可以正常工作,但是我无法添加任何新内容。

这是剧本

var google = require('googleapis');
var key = require('./Sig-Updater.json');
var gmail = google.gmail('v1');

var jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ['https://www.googleapis.com/auth/gmail.settings.basic', 'https://www.googleapis.com/auth/gmail.settings.sharing', 'https://www.googleapis.com/auth/gmail.modify', 'https://mail.google.com', 'https://www.googleapis.com/auth/gmail.compose',
'https://www.googleapis.com/auth/gmail.readonly' ],
  'some_email@somewhere.com'
);

jwtClient.authorize(function (err, tokens) {
  if (err) {
    console.log('Auth failed because: ' + err);
    return;
  }
  console.log(tokens)

  gmail.users.settings.sendAs.update({
    userId: 'me',
    auth: jwtClient,
    sendAsEmail: 'some_email@somewhere.com',
    signature: '<div dir="ltr">Hello there</div>'
  }, function (err, resp) {
    if(err){
      console.log(err);
    } else {
      console.log(resp);
    }
  });
});


抱歉,任何菜鸟业务-该API以及Node.js的新功能

最佳答案

最终我的Noob免责声明似乎是必要的,

我已经从请求中省略了“资源”对象。

应该看起来更像

gmail.users.settings.sendAs.update({
userId: 'me',
auth: jwtClient,
sendAsEmail: 'some_email@somewhere.com',
fields: 'signature',
resource: {
    signature: '<div dir="ltr">Hello there</div>'
    }
}, function (err, resp) {
    if(err){
      console.log(err);
    } else {
      console.log(resp);
    }
});


希望以后能对某人有所帮助!

09-04 14:49
查看更多