我已经找到了大量关于使用用户授权步骤实现Oauth2的信息,但是我正在尝试运行一个容器,该容器会自动抓取gmail收件箱以获取附件,并将其导出到prometheus,并且我很难弄清楚如何实现此库:https://pkg.go.dev/golang.org/x/oauth2/clientcredentials#Config 或任何其他内容来检索令牌而无需手动用户步骤。在 Go 中执行此操作是否需要编写直接 API 调用,因为我找不到现有库来处理此方案?创建谷歌应用密码并使用通用用户/通过SMTP身份验证更有意义吗?
1 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
首先,我明白你想做什么。
您有一个在容器中运行的后端系统,该系统将访问单个gmail帐户并处理电子邮件。
现在,您需要了解正在使用的 API 的限制。
有两种类型的授权用于访问私人用户数据
服务帐户 - 服务器到服务器的交互仅适用于工作区域。无需授权弹出窗口。
Oauth2 - 授权普通用户的gmail帐户,需要用户交互才能授权同意屏幕
如果您没有工作区帐户,并且这是一个普通的gmail用户,那么您别无选择,必须使用Oauth2,这将要求用户至少授权一次应用程序。
使用 Oauth2,您可以请求脱机访问并接收刷新令牌,您可以随时使用它来请求新的访问令牌。问题是,您的应用程序将需要投入生产并进行验证,因为您的刷新令牌只能工作七天,然后它将过期。若要解决此问题并获取未过期的刷新令牌,意味着应用程序必须在生产中并经过验证。这意味着您需要使用受限的gmail范围进行Google的验证过程,这需要第三方安全检查,并且费用在15k - 75k之间,具体取决于您的应用程序。
我知道这是一个单用户系统,但这并不意味着你仍然需要通过验证。当Google添加应用程序验证的需求时,他们没有考虑像您这样的单用户系统。
选择
您是否考虑过直接通过SMPT服务器而不是使用Gmail API?如果您使用应用程序密码,则应通过使用登录名和应用程序密码登录来绕过所有内容。
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消