我确定这是一个简单的错误,但我有兴趣编写一个程序来收集我所有 github 存储库的信息。虽然这似乎很简单,但与 Octokit 有关,但我遇到了与验证我的会话相关的问题。
client = Octokit::Client.new
:login => 'MY_USER_NAME',
:password => 'MY_PASSWORD'
puts client
user = client.user("MY_USER_NAME", :headers => { "PERSONAL_ACCESS_TOKEN_NAME" => "TOKEN" })
puts user
不幸的是,这会导致以下结果:
GET https://api.github.com/users/mccoleman75225: 401 - Must specify two-factor authentication OTP code. // See: https://developer.github.com/v3/auth#working-with-two-factor-authentication (Octokit::OneTimePasswordRequired)
某人如何对他们的会话进行身份验证?
自 2022 年 1 月起,您可以在 GitHub 开发人员设置中创建 PAT(个人访问令牌(,并使用它来通过 Octokit 客户端进行连接,如下所示:
client = Octokit::Client.new(:access_token => "<Your Personal Access Token>")
user = client.user
user.login
# => "monacat"
下面是有关如何创建 PAT 的分步指南。 尝试在创建令牌时选择正确的权限,否则将返回 403 错误,其中包含一条消息,说明缺少的范围。不过,您以后可以随时返回并编辑范围。
来源:
- Octokit.rb — 身份验证
- GitHub API 身份验证 - 个人访问令牌
看起来您的帐户启用了 2 因素身份验证,因此您需要添加 2FA 令牌:
client = Octokit::Client.new
:login => 'defunkt',
:password => 'c0d3b4ssssss!'
client.create_authorization(:scopes => ["user"], :note => "Name of token",
:headers => { "X-GitHub-OTP" => "<your 2FA token>" })
# => <your new oauth token>
请参阅文档