首页 > 解决方案 > 如何在没有键盘的情况下从 Raspberry Pi 使用 Google Calendar API?

问题描述

我们可以在不同设备上获取 Google Calendar API 的凭据吗?

我们在 Raspberry Pi 上使用 Google Calendar API,并参考以下步骤。 https://developers.google.com/calendar/quickstart/python

我们通过以下步骤操作生成了凭据我们选择了电视和受限输入设备作为应用程序类型,然后下载了 JSON 文件。

凭据 > 创建凭据 > OAuth 客户端 ID https://console.developers.google.com/apis/credentials

我们的树莓派没有键盘和显示器。我们注意到“请访问此 URL 以授权此应用程序”中显示的 URL 通过 ssh。我们从 PC 浏览器访问 URL,并在将其绑定到日历后记下验证码。要“输入授权码”,我们输入它。

它按我们的预期工作。但这对我们的客户来说很难。

我们可以使用 PC 或智能手机进行此身份验证吗?在这种情况下,我们如何将 token.pickle 从 PC 或智能手机移动到 Raspberry Pi?可能我们想得太用力了。如果有更简单的方法,请告诉我们。我们只想使用 Google Calendar API。

标签: raspberry-pigoogle-calendar-apicredentials

解决方案


如果您没有 G-Suite 帐户,请使用 SSH 发送令牌

获得token.pickle 后,您无需“访问” URL 即可授权应用程序。无论如何,刷新令牌有其限制。由于以下原因之一,刷新令牌可能会停止工作:

  • 用户已撤消您应用的访问权限。
  • 刷新令牌已六个月未使用。
  • 用户更改了密码,并且刷新令牌包含 Gmail 范围。
  • 用户帐户已超过授予(实时)刷新令牌的最大数量。

请改用服务帐号(仅限 G-Suite 帐号)

token.pickle是第一次生成的。您提到的快速入门使用了用户凭据。但是,如果您只想在设备上使用一个令牌并在每台设备上查看不同的日历,我强烈建议您使用服务帐户并启用域范围的委派以模拟用户的日历。

为此:

  1. 创建服务帐号

  2. 启用域范围的委派

  3. 模拟用户以查看所需的日历(使用 Python)

参考

刷新令牌过期

创建服务帐号


推荐阅读