2017-01-13 33 views
1

我已经通过gmail API授权了一个小型节点应用程序。我正在成功获得答复。例如,我可以使用users.settings.sendAs.list()GmailAPI - Node.js - 无法更新用户签名

但是,当我尝试对设置进行更改时,在这种情况下再次签名,我返回的响应是空的。因此,更新工作在我可以擦除手动添加到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' ], 
    '[email protected]' 
); 

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: '[email protected]', 
    signature: '<div dir="ltr">Hello there</div>' 
    }, function (err, resp) { 
    if(err){ 
     console.log(err); 
    } else { 
     console.log(resp); 
    } 
    }); 
}); 

对不起任何小白业务 - 新的这个API和node.js的确实

回答

2

看起来像我的菜鸟免责声明到底在必要的,

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

应该看起来更像

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

希望帮助别人的未来!