0

こんにちは、Ruby/Rails は初めてで、GitHub の Octokit の Ruby バージョンでの OAuth 応答の処理について質問がありました。ドキュメントを読んだ後、ラッパーとRestClientのベストプラクティスに従う方法について少し混乱しています。アプリを承認すると、アクセストークンと交換するはずの「コード」が返されます。

GitHub API ドキュメントでは、Restclient を使用したこの Sinatra の例を示しています。これは現在、セッション コントローラーの作成アクションにあります。ただし、アプリを構築するときは別の方法でアプローチする必要があり、Octokit ライブラリを使用する必要があると書かれていますが、アクセス トークンのコードを Octokit と交換する正確な方法に関するドキュメントは見つかりません。

私の目標は、ユーザーの GitHub アカウントを介してアプリの新しいメンバーを作成し、その情報を保存してから、ユーザー名/パスワードを作成するのではなく、そのアカウントでサインインできるようにすることです。以下に new.html.erb コードを貼り付けて、私が行っているリクエストも示します。助けてくれて本当にありがとう、ありがとう!

セッションコントローラー

class SessionsController < ApplicationController

  def new
    @client_id = Octokit.client_id
  end

  def create
    # CHANGE THIS TO USE OCTOKIT INSTEAD
    session_code = request.env['rack.request.query_hash']['code']

    result = RestClient.post('https://github.com/login/oauth/access_token',
                            {:client_id => Octokit.client_id,
                             :client_secret => Octokit.client_secret,
                             :code => session_code},
                             :accept => :json)

    access_token = JSON.parse(result)['access_token']
  end
end

OAuth リクエスト

<p>
  Sign In with GitHub
</p>
<p>
  <a href="https://github.com/login/oauth/authorize?scope=user:follow&client_id=<%= @client_id %>">Click here</a> to begin!</a>
</p>
4

1 に答える 1