【问题标题】:Google Drive API: Avoiding Manual AuthenticationGoogle Drive API:避免手动身份验证
【发布时间】:2019-02-06 22:10:36
【问题描述】:

我想编写一个可以连接到 Google Drive API 的 Python 脚本,而无需在每个运行该脚本的设备上手动进行身份验证。

我正在为一项研究编写一些 Python 代码,该研究将在不同的研究地点进行。出于数据隐私的原因,我们无法在本地存储数据,需要将其写入云端(最好是 Google Drive)。我们团队的成员不会出现在软件运行的所有位置,因此任何类型的初始手动身份验证(在不同的站点输入用户名和密码以进行 OAuth)对我们来说确实是不可能的。

我研究了 Google Drive API (Python),想知道是否有办法让运行我的脚本的设备获取刷新令牌(以及后续访问令牌)来修改 Google 表格,而无需手动在每台设备上进行身份验证。

是否有任何方法可以通过 Google Drive API 实现这一点(通过代码可以存储的某种“秘密”)?如果没有,是否有任何其他云服务可以适应这种情况?

此外,python 脚本作为可执行文件的一部分运行(由 Vizard 生成,可能无关紧要,但以防万一)

【问题讨论】:

    标签: python google-api google-drive-api google-oauth


    【解决方案1】:

    是的,它可以做到 - 见How do I authorise an app (web or installed) without user intervention?

    但是,出于两个原因,这可能不是一个好主意。如果您分发带有嵌入机密的代码(从技术上讲,机密是刷新令牌),它们往往不会长期保密。其次,刷新令牌有可能过期,您的用户将死在水中。

    我建议你考虑:-

    • 服务帐号
    • 编写一个 OAuth 代理,您可以在 Google AppEngine 上免费托管该代理,它将所有秘密内容放在服务器上,您的应用可以根据需要从中获取访问令牌。

    【讨论】:

    • 谢谢!只是为了确认一下,当脚本在新设备上运行时,这是否需要 any 类型的身份验证?考虑到我们项目的范围,我们不太担心刷新令牌过期(令牌用完/更改密码)。它肯定会在少于 50 台机器上运行。当然,除非我误解了什么算作刷新令牌/何时发出新令牌。
    • 没有。您将只在 oauth 操场上进行一次身份验证。之后,刷新令牌完全无需任何用户参与即可工作。
    • 知道了,谢谢。我可能会走基本的刷新令牌路线。服务帐户有什么好处(OAuth 代理理由对我来说很有意义,但对于我们的需求而言,它可能不必要地复杂)。
    • 普通的 Google 帐户应该归个人所有,而服务帐户归应用所有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多