DoorkeeperでOauth認証を作ろう
deviseでもoauthはあるんですが、某人曰く「アレはダメだ」とのこと。
特にAPI経由でoauth認証させよう!とかってことであればdoorkeeperを導入するのは良かった。
インストールや使い方
あ、割愛ですー。
(gem install doorkeeperとかやれば良いよ)
http://localhost:3000/oauth/applications
こんな感じのURLでoauth認証用のアプリケーションが出来上がるザンス。
doorkeeperの導入後のoauth認証の試し方
ここが大変だったんでメモ。
まぁまず以下のURLが見つからなくて苦心したってのが本音でして、基本ここを見ればいいってだけなんですけどね。
参考:doorkeeper-gem API endpoint descriptions and examples
僕が実際にやったコマンド
具体的な値は、嘘っぱちになっております。
curl -F response_type=code \
-F grant_type=authorization_code \
-F client_id=9b36d8c0db59eff5038aea7a417d73e69aea75b41aac771816d2ef1b3109cc2f \
-F client_secret=d6ea27703957b69939b8104ed4524595e210cd2e79af587744a7eb6e58f5b3d2 \
-F code=456b683f8c1e5ccde47bdfac47ee3ec96e0f1bec2546734b92980dcb806df207 \
-F redirect_uri=urn:ietf:wg:oauth:2.0:oob \
-F resource_owner_id=1 \
-X POST http://localhost:3000/oauth/token
Postする時に上記のような書き方をしましょうということです。
それぞれのパラメータに何入れるのかですが、
先のdoorkeeperで作ったアプリ、
http://localhost:3000/oauth/applications/1 などのURLで見ることが出来る各項目を入れていきます。
・grant_type
合言葉的な感じ。これ固定で。
-F grant_type=authorization_code
・client_id
doorkeeperで作ったアプリの「アプリケーションID」を入力。
・client_secret
同様の画面の「シークレット」を入力。
・code
同様の画面から「認証」という緑色のボタンを押した後に出てくるコードを入力。
・redirect_uri
同様の画面の「コールバックURL」を入力。
ローカルだと「urn:ietf:wg:oauth:2.0:oob」みたいな謎のコード。
本番だとちゃんとしたURLになるはずですが。
・resource_owner_id
これはオフィシャルのexamplesだとusernameとなってて、メールアドレスを入れてる。
なので自身のデータ構造に合わせてで。
tokenと紐付けるユニークコードで特定できればいいだけです。
上記のcurlをうつとどうなるの?
「access_token」がもらえます。
{"access_token":"51ebde838061a87f4b2ea318386387f6d265a7328b3edfacb4b7deee7c3bfa73","token_type":"bearer","created_at":1481614521
こんな感じね。
これで、access_tokenを使ってごにょごにょやってください。