Заявление об ограничении ответственности:
- Я следил за собственным руководством по быстрому запуску по Node.js от Google и успешно подключаюсь и использую
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
функция предназначена для создания закодированного основного сообщения.
В переменных конфигурации у меня также есть:
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? Что мне не хватает?
https://mail.google.com/, gmail.compose, gmail.modify, gmail.send
- person Sergio   schedule 31.12.2015access token
иrefresh token
и поместите их в вашем.json
-файле. Вы все еще получаете сообщение об ошибке? - person Tholle   schedule 01.01.2016{"code":400,"errors":[{"domain":"global","reason":"invalidArgument","message":"'raw' RFC822 payload message string or uploading message via /upload/* URL required"}]}
- person Sergio   schedule 01.01.2016raw
строкой безопасным (замените все+
на-
и все/
на_
)? - person Tholle   schedule 01.01.2016