gpt4 book ai didi

python - 如何在脚本中使用谷歌应用程序专用密码?

转载 作者:太空狗 更新时间:2023-10-29 20:27:46 26 4
gpt4 key购买 nike

自从在 Google 上启用了双因素身份验证(又名两步验证)后,我的 Google export scripts不再工作。计算机经过验证和信任,但不知何故脚本却没有。实际上,每次运行 cron 作业时,我都会收到一个新的“Google 验证码”并且脚本失败。我认为用 wget 一劳永逸地验证这些脚本应该是一件简单的事情。或 curl ,但我找不到有关如何执行此操作的任何文档。


Google 身份验证方案经过多次迭代,我似乎无法再使用 curl 登录或 mechanicalsoup .我试过使用像 https://accounts.google.com/ServiceLogin?continue=https://calendar.google.com/calendar/exporticalzip&Email=username@gmail.com&Passwd=application-specific-password 这样的 URL ,我总是被重定向到登录页面,通常显示消息“请使用您的帐户密码,而不是应用程序特定的密码。”

最佳答案

您确定要对 shell 脚本使用 2 因素身份验证吗?如果是这样,您不需要尝试让您的计算机或脚本成为“受信任的”。每次运行脚本时,您只需执行完整的 2 因素身份验证。

如果目标是跳过手动第二因素身份验证,我建议改为使用特定于应用程序的密码(正如其他答案所建议的那样)。 假装您根本没有使用双因素身份验证并使用您的真实登录名,但将密码设置为在 https://accounts.google.com/b/0/IssuedAuthSubTokens?hl=en 生成的密码(https://www.google.com/settings/security 的子页面)。

目的是将特定于应用程序的密码“名称”设置为对您有意义的值。例如,我的密码标有“Pidgin at work”、“My Android Phone”、“Thunderbird Google Address Book Extension at Work”等。您可以为“Calendar and Reader Export Script”设置一个密码。如果您认为此应用程序特定密码已泄露(“泄露”),只需点击同一页面上的“撤销”链接,然后为您的脚本生成一个新密码。

对于代码,只需使用适用于 Google 单因素身份验证的最新版本。 更新:因为原始问题使用 URL https://accounts.google.com/ServiceLogin 来启动 session 登录,所以它实际上是伪造的浏览器登录。然而,谷歌并不正式支持这一点,在我写这篇文章时,似乎使用应用程序专用密码进行正常登录最终会出现错误消息“请使用您的帐户密码而不是应用程序专用密码”。

关于 Google 2 因素身份验证和“受信任的计算机”,需要了解的一件事是,实际实现只是向您的浏览器添加一个具有 30 天有效期的永久 cookie。受信任的计算机并不意味着您的 IP 地址是受信任的或创建了其他一些神奇的连接。除非您的脚本从您选择的浏览器中捕获“受信任的计算机”cookie,否则您是否曾经将计算机标记为受信任根本无关紧要。 (Google 表单不应说“记住这台计算机 30 天”,而是“信任此浏览器和用户帐户组合 30 天(保存永久 cookie)”。但是,我想这被认为太技术化了......)

更新:(从我下面的评论中复制)唯一官方支持的方法(服务器到服务器应用程序)记录在 https://developers.google.com/accounts/docs/OAuth2ServiceAccount .它需要 OAuth/JWT 对请求进行编码并使用在 https://code.google.com/apis/console 创建的服务帐户私钥.作为替代方案,您可以使用 ClientLogin 身份验证(已弃用,2015 年之前尽力而为的服务)。

如果您决定使用 OAuth,您可能需要查看 http://blog.yjl.im/2010/05/bash-oauth.htmlhttps://github.com/oxys-net/curl-oauth

关于python - 如何在脚本中使用谷歌应用程序专用密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com