【问题标题】:How to use the Google Calendar API from a Raspberry Pi without a keyboard?如何在没有键盘的情况下从 Raspberry Pi 使用 Google Calendar API?
【发布时间】:2020-11-25 20:07:50
【问题描述】:

我们能否在不同设备上获取 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

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

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

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

【问题讨论】:

    标签: raspberry-pi google-calendar-api credentials


    【解决方案1】:

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

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

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

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

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

    这样做:

    1. Create a service account

    2. Enable the domain-wide delegation

    3. Impersonate the user in order to see the desired calendar (using Python)

    参考

    Refresh token expiration

    Creating a service account

    【讨论】:

    • 谢谢你,何塞。我们已经了解只访问一次 URL。由于我们的客户无法使用 SSH,因此我们向他们咨询了我们将为他们提供的替代方案。我们不知道域范围的委派。我们会调查的。
    • 何塞,我们仍在努力解决这个问题。但我们还没有在这方面取得成功。当我们使用域委派时,用户是否只能从该域获取日程安排?我们只会获取与 G Suite 关联的 Google 日历信息吗?或者世界上的任何用户都可以使用我们的服务吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多