如何在网站上为多个用户运行 Gmail API?
Posted
技术标签:
【中文标题】如何在网站上为多个用户运行 Gmail API?【英文标题】:How to run Gmail APIs on a website for multiple users? 【发布时间】:2021-12-24 01:25:57 【问题描述】:我目前正在使用 Gmail API 开发一个应用程序,用于读取用户允许我访问的特定信息的电子邮件。我可以使用quickstart tutorial 为我自己的收件箱运行它。
但是,我对如何在服务器上运行我的应用程序感到困惑,以便它继续获得用户许可并每月为每个用户运行应用程序而无需任何输入。
任何正确方向的线索都会很有用。
【问题讨论】:
如果多个用户属于同一个域,您是否考虑过服务帐户?签出this。 用户可以是任何希望公开使用网站的人,不限于某个域。那么服务帐户也可以工作吗? 如果我没记错的话,你可能需要每个用户至少验证一次。 服务帐户仅适用于 Workspace 域帐户,不适用于普通 gmail 帐户。 【参考方案1】:假设您正在使用此代码Python Quickstart
那么你需要看一下这段代码的一些事情。
此代码设计为已安装的应用程序。
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
这就是为什么它说To learn how to create credentials for a desktop application,
此代码旨在在用户计算机上运行。那是因为它在运行它的机器的浏览器中打开了同意屏幕。如果您尝试将其放在服务器上,它将无法正常工作,因为如果它尝试在服务器上打开,用户将无法访问同意屏幕。
此代码的第二个问题是它是为单用户设计的。当用户运行此代码时,他们的同意以访问令牌和刷新令牌的形式存储在此文件中
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
因此,每次运行时,它要么以同一用户身份运行,要么您需要删除 token.json,它会让您以不同用户身份登录。为了让多用户工作,您需要将其设置为为每个用户而不是单个用户创建一个新的 json 文件。
你需要弄清楚如何让 google api python 客户端库在多用户服务器上运行,不幸的是我从来没有弄清楚它是否支持。
验证
您知道使用 Gmail 范围验证应用程序的成本吗?
【讨论】:
以上是关于如何在网站上为多个用户运行 Gmail API?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有用户交互的情况下使用 GMail API 创建草稿