【发布时间】:2020-03-20 04:40:34
【问题描述】:
我是新手,请多多包涵。
我正在尝试设置一个 Google Cloud Function,它可以访问同一域中的单个 GMail 帐户,下载一些电子邮件并将它们推送到 Cloud Storage。老实说,我只想在脚本中使用电子邮件和密码(使用 Google KMS /w 环境变量?),但我知道这是不可能的,并且需要 OAuth2。
我在 GCP 中设置了 OAuth 客户端,并运行了 GMail API Python Quickstart 指南。在本地运行它会提示我允许访问,并保存令牌,以便后续运行无需提示。
我使用 pickle 文件部署了 Cloud Function,以测试刷新令牌是否仍然有效,并计划在以后弄清楚如何使用 KMS 来提高安全性。但是加载泡菜时出现问题:
UnpicklingError: invalid load key, '\xef'
这使得泡菜在上传时看起来像是被压缩/损坏。
这甚至是一种理智的方法吗?我怎么能这样做?电子邮件地址是我的,所以我希望我可以验证一次并完成它。
顺便说一句,我不能使用域委派的服务帐户,也不能使用 IMAP。
【问题讨论】:
-
如果我总结一下,您想知道存储令牌的最佳安全方法是什么?
-
@guillaumeblaquiere 如何在本地转储令牌,安全地存储它并从该令牌进行身份验证会很棒。或者当通过 HTTP 调用 Cloud Function 时可能重定向到 Google OAuth 进程?然后在第一次通话后存储它。那太好了。
-
不确定这里的问题是什么 :-) 如果您不想打扰 OAuth dance,您应该使用 API 工具(如 Bearer.sh)来处理为您进行身份验证。
标签: python oauth-2.0 google-cloud-functions gmail-api