如何使用Gmail API访问我拥有的Gmail账户?

23
我想将一个使用 Gmail API 轮询我拥有的 Gmail 帐户的节点脚本作为 cronjob 运行。
我正在遵循这些快速入门指南

quickstart

我卡在第一步。当请求cron脚本的凭据时,它告诉我:“因为需要用户交互进行登录,所以无法从没有UI的平台访问用户数据”:

enter image description here

总的来说,这些文档很令人困惑,并提到了“服务帐户”,“OAuth”和其他内容-我无法确定哪些适用于我的用例,哪些不适用。我使用过许多SaaS API,典型的工作流程是登录到您的帐户,获取API密钥和密码,在您的脚本中使用它们来访问API。看起来Gmail API并不使用这种范例,因此我将欢迎任何指导或链接到更清晰的说明。

2个回答

13

我也发现有时候文档可能会让人感到困惑,但是一旦你掌握了要点,实际上做起来相当简单:

  1. 在 Google 上注册你的应用,并指定你想要访问的 API(这里只需要 Gmail API)。这将给你两个字符串,一个是 client_id,另一个是 client_secret(这就是上面那个 client_secrets.json 文件的内容)。
  2. 由于你只是为自己的帐户编写脚本,所以不需要 HTTP 服务器。可以使用 Oauth Playground。在右上角点击“设置”图标,使用你自己的 OAuth 凭据。
  3. 在 API 的列表中选择 Gmail API,并按照提供的步骤操作。

现在你拥有了一个 access_token 和一个 refresh_token,可以用它们来让你的脚本无限期地运行!


谢谢!我使用了您的方法获取了我的access_token,并在此之后能够使用命令行curl与API进行交互。我的问题是:token过期后,如何使用refresh_token获取新的token?请注意,我将从脚本中执行此操作,而不是手动执行... - Jonah
@Jonah 没问题!您可以查看使用刷新令牌的文档,了解如何格式化请求。 - Tholle
1
谢谢!我以为自己失去理智了,因为我无法通过REST接口访问自己帐户的数据。这完全拯救了我。 - Kevin
尝试使用API密钥,但它只提供对公共数据而非账户数据的访问权限。 - shalvah
问题在于Google OAuth 2.0要求您将项目指定为“测试”或“已发布”。针对“测试”项目发行的OAuth 2.0令牌仅在一周内有效,此后用户必须再次完成OAuth同意流程。而针对“已发布”项目发行的OAuth 2.0令牌是永久有效的,但发布需要向Google提交项目进行审查和批准,包括视频和安全策略的书面说明等。简而言之,Google已经把它的整个服务搞砸了,对于普通用户来说,API在功能上对我们不可用。 - David Stein
显示剩余2条评论

0
为了充分理解Gmail API的使用,阅读Gmail API概述将会有所帮助。
您还可以使用这些文档来开始构建Gmail应用程序: 希望这些对您有所帮助。

3
所以,是的,我已经阅读了所有这些内容,它们非常令人困惑。我的“项目”和我的“应用程序”有什么区别?还是它们是一样的?为了使用API访问我的自己的Gmail帐户,似乎我必须创建“一个应用程序”,然后使用基于Web的OAuth页面授予该应用程序访问我的Gmail帐户的权限,然后我的应用程序使用OAuth令牌进行API请求?这是正确的吗?这似乎非常复杂,因为我只是想访问自己的帐户... - Jonah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接