因此,我离解决方案只差半步了,问题是在创建时
const jwtClient = newgoogle.auth.JWT(googleKey.client_email, null, googleKey.private_key,['https://www.googleapis.com/auth/gmail.send'], null);我没有提到要模拟的帐户。
正确的初始化应为:
const jwtClient = new google.auth.JWT(googleKey.client_email, null,googleKey.private_key, ['https://www.googleapis.com/auth/gmail.send'],'user@domain.com');
总而言之,正确的步骤是:
- 在Google Cloud Platform中创建了一个项目
- 创建一个服务帐号
- 已
Domain Wide Delegation
为服务帐户启用 - 以JSON格式下载了服务帐户的密钥
API Manager
>Credentials
我创建了OAuth 2.0 Client ID
- 为项目启用了Gmail API
在Google Apps管理控制台中:
- 在
Security
>Advanced Settings
>Manage API client access
我已经添加了Client ID
从上述步骤4 - 我添加了所有可能的范围
Client ID
这是发送邮件的代码:
const google = require('googleapis');const googleKey = require('./google-services.json');const jwtClient = new google.auth.JWT(googleKey.client_email, null, googleKey.private_key, ['https://www.googleapis.com/auth/gmail.send'], '<user to impersonate>');jwtClient.authorize((err, tokens) => { if (err) { console.err(err); return; } console.log('Google auth success') var gmail = google.gmail({version: 'v1'}) var raw = <build base64 string according to RFC 2822 specification> var sendMessage = gmail.users.messages.send({ auth: jwtClient, userId: '<user to impersonate>', resource: { raw: raw } }, (err, res) => { if (err) { console.error(err); } else { console.log(res); } });
希望对其他人有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)