gpt4 book ai didi

google-api - GMail API super 管理员通过 API 访问其他用户帐户?

转载 作者:行者123 更新时间:2023-12-04 13:06:10 27 4
gpt4 key购买 nike

自 2009 年初以来,我的机构目前正在运行 Google Apps for Education。我负责创建、删除、修改等学生电子邮件帐户。我已将所有现有的 C# 应用程序从 GData 转换为新的 Admin SDK - 生活很美好。

上周,其中一个部门向大约 800 名学生发送了一封包含错误的电子邮件。有人问我是否可以创建一个快速应用程序,能够删除 800 名学生收件箱的电子邮件。

使用我的“ super 管理员”域帐户,我能够使用 Gmail API 创建一个应用程序,进入我的收件箱并选择符合特定条件的特定电子邮件;示例:from:xxxx@domain.edu AND is:unread AND subject:test我能够返回一组消息 ID,然后我可以将它们从收件箱中删除——太棒了!

由于我能够在收件箱上执行此操作,我想我会进行另一次测试并插入这 800 个电子邮件地址中的一个并获得相同的结果。不幸的是我收到了这个错误信息:

Error: Google.Apis.Requests.RequestError Delegation denied for xxxxx@domain.edu [403] Errors [ Message[Delegation denied for xxxxx@domain.edu] Location[ - ] Reason[forbidden] Domain[global] ]



我确实阅读了有关帐户委托(delegate)的内容,但这需要从我的“ super 管理员”帐户发送请求并且学生接受它。

难道域的“ super 管理员”除了自己的收件箱外,对任何收件箱都没有这些权限?我试过阅读帖子和谷歌的文档,但我似乎找不到关于这个话题的答案。

在此桌面应用程序的开发者控制台中启用了 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("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);
}

最佳答案

即使您是域中的管理员,您也无法以自己的身份进行身份验证并访问其他邮箱。但是,作为域管理员,您可以将您的应用列入白名单以访问域中的所有用户。它涉及使用具有域范围委派的服务帐户。您需要在 Google Apps Cpanel 中将您的应用列入白名单,并使用稍微不同的身份验证流程。看:
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority

尽管确实会发生电子邮件错误,但只需让他们回复以纠正错误信息即可。从“用户信任”的角度来看,即使有可能,从他们的邮箱中删除电子邮件似乎也是一个非常糟糕的主意(如果你有一个错误并删除了错误的邮件会发生什么!)——有人尝试过推理说关于这个想法的人? :-D 已经看过电子邮件的用户可能会在它消失时感到担心/困惑,等等。

关于google-api - GMail API super 管理员通过 API 访问其他用户帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30786709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com