Общедоменное делегирование - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь использовать служебную учетную запись с делегированием по всему домену, чтобы я мог выдать себя за пользователя и поработать над его учетной записью 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]

1 Ответ

0 голосов
/ 26 марта 2019

Делегирование по всему домену применимо только к пользователям в домене GSuite и может быть настроено только администратором в указанном домене.

Если приведенное выше утверждение описывает вашу настройку, то вы, вероятно, пропустили шаг.

Я подозреваю, что вы забыли обновить доступ к клиентскому API через консоль администратора .

Вам нужно будет установить все области, которые вы намереваетесь использовать в этом диалоговом окне (по ссылке выше) в консоли администратора.

...