GMail API Super Admin доступ к учетным записям других пользователей через API?
В моем учебном заведении Google Apps for Education в настоящее время работает с начала 2009 года. Я отвечаю за создание, удаление, изменение и т. Д. Учетных записей электронной почты учащихся. Я преобразовал все свои существующие приложения C # из GData в новый Admin SDK - жизнь хороша.
На прошлой неделе одно из департаментов разослало электронное письмо примерно 800 студентам с ошибкой. Меня спросили, возможно ли создать быстрое приложение, способное удалить электронную почту для 800 ящиков входящих сообщений.
Используя мою учетную запись домена «Super Admin», я смог создать приложение с помощью API Gmail, чтобы войти в свою папку «Входящие» и выбрать определенные электронные письма, которые соответствуют определенным критериям; пример:from:[email protected] AND is:unread AND subject:test
Мне удалось вернуть коллекцию идентификаторов сообщений, которые затем я могу удалить из почтового ящика - ОТЛИЧНО!
Так как я смог сделать это на своем почтовом ящике, я решил провести еще один тест, подключить один из этих 800 адресов электронной почты и получить тот же результат. К сожалению, я получил это сообщение об ошибке:
Ошибка: Google.Apis.Requests.RequestError Делегирование отклонено для [email protected] [403] Ошибки [Сообщение [Делегирование отклонено для [email protected]] Местоположение [-] Причина [запрещен] Домен [глобальный]]
Я прочитал кое-что о делегировании учетной записи, но для этого потребовалось бы отправить запрос с моей учетной записи «Super Admin», а учащийся принял его.
Может ли быть так, что «Супер Администратор» домена не имеет этих разрешений ни в одной папке входящих сообщений, кроме своих собственных? Я пытался читать сообщения и документацию Google, но не могу найти ответ на эту тему.
Gmail API включен в консоли разработчика для этого настольного приложения.
Учетная запись службы, которую я использую, авторизована, и в приложении C # используются правильные области:
Scopes = new[] {
"https://mail.google.com",
GmailService.Scope.GmailCompose,
GmailService.Scope.GmailInsert,
GmailService.Scope.GmailLabels,
GmailService.Scope.GmailModify,
GmailService.Scope.GmailReadonly,
GmailService.Scope.MailGoogleCom,
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile"},
Мой код C #:
List<Google.Apis.Gmail.v1.Data.Message> result = new List<Google.Apis.Gmail.v1.Data.Message>();
UsersResource.MessagesResource.ListRequest request = GoogleToken.GoogleService().Users.Messages.List("[email protected]");
request.Q = " from:[email protected] AND is:unread AND subject:test ";
do
{
try
{
ListMessagesResponse response = request.Execute();
result.AddRange(response.Messages);
request.PageToken = response.NextPageToken;
}
catch (Exception eX)
{
Debug.WriteLine("Error: " + eX.Message);
}
}
while (!String.IsNullOrEmpty(request.PageToken));
Debug.WriteLine("Done");
Debug.WriteLine(result);
}