O Superadministrador da API do GMail acessa outras contas de usuários via API?
Atualmente, minha instituição está executando o Google Apps for Education desde o início de 2009. Sou responsável por criar, excluir, modificar etc. contas de e-mail de alunos. Converti todos os meus aplicativos C # existentes do GData para o novo Admin SDK - a vida é boa.
Na semana passada, um dos departamentos enviou um e-mail a cerca de 800 estudantes que continham um erro. Me perguntaram se é possível criar um aplicativo rápido capaz de remover o email da caixa de entrada de 800 alunos.
Usando minha conta de domínio "Superadministrador", consegui criar um aplicativo usando a API do Gmail para acessar minha caixa de entrada e selecionar emails específicos que correspondiam a um critério específico; exemplo:from:xxxx@domain.edu AND is:unread AND subject:test
Consegui retornar uma coleção de IDs de mensagens, que podem ser excluídos da caixa de entrada - ÓTIMO!
Como consegui fazer isso na minha caixa de entrada, imaginei realizar outro teste, conectar um desses 800 endereços de e-mail e obter o mesmo resultado. Infelizmente, recebi esta mensagem de erro:
Erro: Delegação do Google.Apis.Requests.RequestError negada para xxxxx@domain.edu [403] Erros [Mensagem [Delegação negada para xxxxx@domain.edu] Localização [-] Motivo [proibido] Domínio [global]]
Eu li algo sobre a delegação de contas, mas isso exigiria o envio de uma solicitação da minha conta "Superadministrador" e o aluno a aceitá-la.
Será que o "Superadministrador" do domínio não tem essas permissões em nenhuma caixa de entrada, exceto as próprias? Tentei ler as postagens e a documentação do Google, mas não consigo encontrar uma resposta sobre este tópico.
A API do Gmail está ativada no console do desenvolvedor para este aplicativo de desktop.
A conta de serviço que estou usando está autorizada e no aplicativo C # está usando os escopos corretos:
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"},
Meu código 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("xxxxx@domain.edu");
request.Q = " from:xxxx@domain.edu 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);
}