Posted at

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

More than 1 year has passed since last update.


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