Отказ от ответственности:
- Я следовал собственному руководству Google по Node.js и успешно подключился и использую функциональность
gmail.users.labels.list()
. - Я проверил здесь вопросы/ответы, например, этот (который не использует API Node.js, о котором я спрашиваю), или этот (похожий на этот), который, по-видимому, является той же проблемой, что и у меня, но решение не дает Работа.
Моя проблема:
При использовании Google Node.js API я получаю сообщение об ошибке при попытке отправить электронное письмо. Ошибка:
{
"code": 403,
"errors": [{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}]
}
Моя настройка:
fs.readFile(secretlocation, function processClientSecrets(err, content) {
if (err) {
console.log('Error loading client secret file: ' + err);
return;
}
authorize(JSON.parse(content), sendMessage);
});
function sendMessage(auth) {
var raw = makeBody('[email protected]', '[email protected]', 'subject', 'message test');
gmail.users.messages.send({
auth: auth,
userId: 'me',
message: {
raw: raw
}
}, function(err, response) {
res.send(err || response)
});
}
Функция processClientSecrets
из руководства Google, о котором я упоминал выше. Он читает мой файл .json
котором есть мои access_token
и refresh_token
. Функция makeBody
- это создание закодированного сообщения тела.
В конфиге variabels у меня также:
var SCOPES = [
'https://mail.google.com/',
'https://www.googleapis.com/auth/gmail.modify',
'https://www.googleapis.com/auth/gmail.compose',
'https://www.googleapis.com/auth/gmail.send'
];
Почему это должно работать:
- процесс авторизации работает для
gmail.users.labels.list()
. - тело сообщения, которое я тестирую, работает, если я тестирую его на тестовой странице Google.
Мой вопрос:
Мои настройки неверны? Были ли изменения в API? Что мне не хватает?