问题描述
我们正在.NET Core 3.1
中开发一个内部应用程序。要求之一是,应用程序的所有用户必须能够查看GSuite一部分的预定义Gmail帐户(例如test@company.com
)中的邮件数量。这意味着每个登录该应用程序的用户都可以查看此信息,而无需任何其他Google登录或类似操作。应用程序应该能够仅使用代码访问电子邮件,而无需用户交互。
在阅读文档时,我注意到有两种类型的帐户-普通帐户和服务帐户。我有以下问题:
- 哪种帐户类型适合我们的情况?我倾向于服务帐户。
- 要从
test@company.com
访问电子邮件,我需要做什么?我需要登录此帐户,启用Gmail API,创建服务帐户,下载凭据并在我们的应用程序中使用它们吗? Gsuite管理员是否需要做其他事情? - 服务帐户是否适用于非GSuite电子邮件?我想在我创建的随机帐户(例如
abc123@gmail.com
)上测试代码吗?
解决方法
您将需要gsuite管理员为您的服务帐户设置域范围内的委派,以便能够访问域中用户的电子邮件帐户。服务帐户不适用于非gsuite域电子邮件。
GoogleCredential credential;
using (var stream = new FileStream(serviceAccountCredentialFilePath,FileMode.Open,FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream).CreateScoped(scopes);
}