Я пытаюсь использовать служебную учетную запись с делегированием по всему домену, чтобы я мог выдать себя за пользователя и поработать над его учетной записью G-Suite (в частности, электронной почтой). Кажется, что я могу аутентифицироваться, используя служебную учетную запись, но когда я запускаю код, я сообщаю мне, что моя учетная запись (не учетная запись службы) не имеет делегирования по всему домену и завершается ошибкой. Я не знаю, где я иду не так, или, возможно, это невозможно в App Script. Код и сообщение об ошибке ниже.
function run() {
var service = getService();
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/gmail/v1/users/' + '[impersonation_email]' + '/threads';
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
},
muteHttpExceptions: true
});
Gmail.Users.Threads.trash(userId=[impersonation_email], id=[specific_email_id]);
} else {
Logger.log(service.getLastError());
}
}
function getService() {
return OAuth2.createService('Gmail:' + '[impersonation_email]')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey([service_account_PRIVATE_KEY_location])
.setIssuer([service_account_CLIENT_EMAIL])
.setSubject([impersonation_email ])
.setPropertyStore(PropertiesService.getScriptProperties())
.setScope('https://mail.google.com/')
}
Сообщение об ошибке:
API call to gmail.users.threads.trash failed with error: Delegation denied for [my email account]