Help us understand the problem. What is going on with this article?

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

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

favy
デジタルマーケティングのスペシャリストと飲食業界出身の食のスペシャリストでチームは構成されていて、飲食市場に特化したマーケティング支援を軸に「飲食店がかんたんに潰れない世界を創る」を真剣に実現するためにチャレンジしています。
http://www.favy.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away