尝试使用帐户服务从 Gmail 帐户读取 Gsuite 中的公司电子邮件时出现 401 未经授权的错误

Posted

技术标签:

【中文标题】尝试使用帐户服务从 Gmail 帐户读取 Gsuite 中的公司电子邮件时出现 401 未经授权的错误【英文标题】:401 Unauthorized Error when trying to read corporative emails in Gsuite from a Gmail account using Account Service 【发布时间】:2018-05-26 12:54:31 【问题描述】:

我在公司 Gmail 帐户(尤其是 Gsuite Gmail 帐户)中阅读电子邮件时遇到问题。

我已经按照以下步骤操作了:

转到 Google API 控制台。 创建一个新项目。 创建一个新的服务帐户 获取p12格式的私钥 允许将 G Suite 域范围的权限委派给服务帐号。 转到 Gsuite 管理面板。 转到安全部分 允许电子邮件范围(读/写/发送)https://mail.google.com/ 到服务帐户。 我使用 p12 私钥编写了以下代码:(https://developers.google.com/admin-sdk/reports/v1/guides/delegation)。 这是代码:https://gist.github.com/sebastianmorenoe/40c16c1bb3420b27917d2dc58eb385f0

很遗憾,我收到此错误:com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized

非常感谢您提供的任何帮助。

问候

【问题讨论】:

如果您将服务帐户的电子邮件用于变量 ACCOUNT_EMAIL 而不是您自己的电子邮件,会发生什么情况? @noogui maven 依赖项的版本有问题。我发布了具有正确依赖关系的答案。 【参考方案1】:

maven 依赖有问题。

使用这些依赖关系解决了这个问题。

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.23.0</version>
</dependency>

<dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.23.0</version>
</dependency>

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-gmail</artifactId>
    <version>v1-rev73-1.23.0</version>
</dependency>

【讨论】:

以上是关于尝试使用帐户服务从 Gmail 帐户读取 Gsuite 中的公司电子邮件时出现 401 未经授权的错误的主要内容,如果未能解决你的问题,请参考以下文章

通过服务帐户设置 Gmail 委托时出现权限不足错误

Gmail API 将访问权限限制为仅一个组

Gmail API 服务帐户请求 - 前提条件检查失败

Gmail API 是不是支持使用 OAuth 服务帐户?

Gmail API - 从 g-suite 服务帐户发送邮件时设置发件人名称

PHPMailer使用GMAIL SMTP和多个GMAIL帐户用于多个虚拟主机