首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在脚本中使用Google应用程序专用密码?

如何在脚本中使用Google应用程序专用密码?
EN

Stack Overflow用户
提问于 2012-04-21 11:29:53
回答 4查看 11.2K关注 0票数 11

因为启用了2因素身份验证(又名。在Google上,我的Google导出脚本不再工作了。计算机是经过验证和信任的,但不知何故脚本不是。实际上,每当运行cron作业时,我都会收到一个新的"Google验证代码“,脚本就会失败。我认为使用wgetcurl对这样的脚本进行一次身份验证应该是一件简单的事情,但我找不到任何关于如何实现的文档。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-09 05:57:00

您确定要在shell脚本中使用2因子auth吗?如果是这样,您不需要尝试将您的计算机或脚本作为“受信任的”。每次运行脚本时,只需执行完整的2因子操作即可。

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

其目的是将特定于应用程序的密码“名称”设置为对您有意义的值。例如,我的密码标有"Pidgin at work“、"My Android Phone”、"Thunderbird Google地址簿扩展名“等。您可以使用”日历和读者导出脚本“的密码。如果您曾经相信这个特定于应用程序的密码被泄露(“泄漏”),只需点击同一页上的"Revoke“链接,然后为您的脚本生成一个新的密码。

对于代码,只需使用与Google单因素兼容的最后一个版本即可。更新:,因为最初的问题是使用URL启动会话登录,它实际上是伪造浏览器登录。然而,谷歌并不正式支持这一点,正如我所写的,在正常登录时使用特定于应用程序的密码将导致错误消息“请使用您的帐户密码而不是特定于应用程序的密码”。

要了解Google的2因子auth和“可信计算机”的一件事是,实际的实现只是在浏览器中添加了一个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

票数 6
EN

Stack Overflow用户

发布于 2019-01-29 21:29:35

我的python脚本停止发送电子邮件,因此我生成了特定于应用程序的密码,将我的脚本实用程序gmail帐户(例如myscriptutility@gmail.com)更改为该密码,然后通过下面的python脚本片段成功地使用了该密码(例如,'applicationpassw') (对不起,没有完整的示例)。

代码语言:javascript
复制
email = SMTPHandler(mailhost=('smtp.gmail.com',587),
    fromaddr='anyaddress@mail.homeserver',
    toaddrs=['whoiwanttomailto@gmail.com'],
    subject= webSite + ' not working',
    credentials=('myscriptutility@gmail.com','applicationpassw'),
    secure=())
logger.addHandler(email)

因此,看起来,至少在Windows 10上使用python 3.6.5,只需要更改为在帐户和应用程序中使用特定于16 char应用程序的密码。

票数 2
EN

Stack Overflow用户

发布于 2012-04-23 14:14:32

生成一个特定应用密码用户文档开发人员文档.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10258509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档