Techioz Blog

OctoKit Ruby認証

概要

これは単純なエラーだと確信していますが、すべての 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/[username]: 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 エラーが返されます。ただし、後でいつでも戻ってスコープを編集できます。

出典: