LoginSignup
2
3

More than 5 years have passed since last update.

Doorkeeper gem でOauth認証できるアプリケーションを作った後の事

Posted at

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を使ってごにょごにょやってください。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3