gpt4 book ai didi

python - 为什么 github3.py 两次要求第二个身份验证因素?

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:07 26 4
gpt4 key购买 nike

我正在使用 github3.py 访问我组织的 Github 帐户,并且我们启用了双因素身份验证。我首先列出存储库。这是代码:

import os

import github3

USER = os.environ['GITHUB_USERNAME']
PASS = os.environ['GITHUB_PASSWORD']

try:
# Python 2
prompt = raw_input
except NameError:
# Python 3
prompt = input

def get_second_factor():
print("Authenticator called")
code = ''
while not code:
# The user could accidentally press Enter before being ready
code = prompt('Enter 2FA code: ')
print("Received code:", code)
return code

gh = github3.login(USER, PASS, two_factor_callback=get_second_factor)

org = gh.organization("<ORGNAME>")
for repo in org.iter_repos(type="all"):
print(repo.ssh_url)

不幸的是,似乎不仅调用 github3.login 触发了第二个因素的请求,调用 org.iter_repos 触发了第二个请求。

这是预期的行为吗?如何确保程序仅在第一次需要时尝试 2FA?

最佳答案

所以简短的回答是,为了避免输入第二因素代码,您可以通过访问您在网站上的设置来创建“个人访问 token ”。当你拥有它时,你可以将它作为 token 参数传递给 github3.login

长答案是调用 login 不会调用它,而是调用 organizationiter_repos 触发两个 2FA 请求。事实上,如果您有超过 100 个存储库,那么之后每一百个存储库都会要求您提供它。原因是每次您向 API 发出请求时,GitHub API 都会提示您输入第二个因素 token 。这意味着每次 github3.py 向 API 发出请求时,我们都会收到一个特定的响应,即挑战。发生这种情况时,我们会使用您输入的 token 重复请求。因此,为了避免多次输入,您需要使用个人访问 token 。

关于python - 为什么 github3.py 两次要求第二个身份验证因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344717/

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