こんにちは、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>