У меня есть домен G Suite, и я открываю учетную запись службы с делегированием домена. У учетной записи службы также есть идентификатор владельца в проекте. Я включаю API Gmail и добавляю область действия, указанную в (https://developers.google.com/admin-sdk/directory/v1/guides/delegation «Делегировать полномочия на уровне домена вашей учетной записи службы») Я также включаю настройку менее безопасного приложения.
Вот мой код:
var {google} = require('googleapis');
var jwtClient = new google.auth.JWT(
"[email protected]",
null,
"-----BEGIN PRIVATE KEY-----\n....",
['https://mail.google.com/',
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/gmail.modify',
'https://www.googleapis.com/auth/gmail.metadata'] // I have also tried https://www.googleapis.com/auth/gmail.imap_admin
);
jwtClient.authorize(function(err, tokens) {
if (err) {
console.error(err);
return;
}
console.info(tokens); // successful print the token
});
Но когда я использую этот токен, чтобы попытаться указать адрес электронной почты: ПОЛУЧИТЬ https://www.googleapis.com/gmail/v1/users/me/messages?access_token= {access_token}
Произошла ошибка.
{
"error":{
"errors":[
{
"domain": "global",
"reason": "failedPrecondition",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Мне не нужен обходной путь, я намерен решить проблему со служебной учетной записью. Мне удалось использовать Gmail API с другими вариантами аутентификации. Я прочитал много статей, но ни одна из них не помогает. Я придерживаюсь этого в течение недели, буду очень признателен за любой совет.
Я могу предоставить более подробную информацию, если это будет иметь значение.





Добавление дополнительного утверждения должно решить эту проблему.
var jwtClient = new google.auth.JWT(
"[email protected]",
null,
"-----BEGIN PRIVATE KEY-----\n....",
['https://mail.google.com/',
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/gmail.modify',
'https://www.googleapis.com/auth/gmail.metadata'], // I have also tried https://www.googleapis.com/auth/gmail.imap_admin
'[email protected]' // use a user email in your domain since service account do not have Gmail box
);
Я пробовал ... немного не получается ... Муравей дополнительный трюк? (Моя учетная запись службы имеет делегирование полномочий в рамках всего домена, с этим справляется) Точно такие же параметры ... (исключенная учетная запись пользователя в моем домене), и я получаю: Ошибка: unauthorized_client: Клиент не авторизован для получения токенов доступа с помощью этого метода. ... спасибо за обратную связь: