我已经找到了关于使用用户授权步骤实现Oauth2的大量信息,但我正在尝试运行一个容器,该容器会自动抓取gmail收件箱中的附件,并将其导出到prometheus,而且我很难找到如何实现这个库:https://pkg.go.dev/golang.org/x/oauth2/clientcredentials#Config或其他任何不涉及手动用户步骤来检索令牌的容器。
在Go中这样做是否需要编写直接的API调用,因为我找不到一个现有的库来处理这个场景?创建Google密码并使用通用用户/通过SMTP身份验证更有意义吗?
发布于 2021-08-18 07:04:13
首先,我明白你想做什么。
您有一个后端系统运行在一个容器中,它将访问一个gmail帐户并处理电子邮件。
现在,您需要了解您正在使用的API的局限性。
有两种类型的授权用于访问私有用户数据
如果您没有一个工作区帐户,并且这是一个普通的gmail用户,那么您就别无选择,必须使用Oauth2,这将要求用户至少授权应用程序一次。
使用Oauth2,您可以请求脱机访问并接收刷新令牌,您可以使用该令牌在任何时候请求新的访问令牌。问题是,您的应用程序将需要在生产和验证,因为您的刷新令牌将只工作七天,然后它将过期。若要修复此问题并获得不过期的刷新令牌,则意味着您的应用程序必须在生产中进行验证。这意味着你需要通过谷歌的验证过程与一个受限制的gmail范围,这需要第三方的安全检查和费用在15K-75k之间取决于您的应用程序。
我知道这是一个单一的用户系统,但这并不意味着您仍然需要进行验证。当google增加了应用程序验证的需求时,他们并没有考虑像您这样的单一用户系统。
选项
您考虑过直接通过SMPT服务器而不是使用Gmail吗?如果您使用应用程序密码,您应该绕过一切,登录登录和应用程序密码。
https://stackoverflow.com/questions/68811564
复制相似问题