Ruby on Rails Advent Calendar 2日目遅れました(^o^)
--
タイトルの通りですが、以前ブログに書いた事がある自社サービスの機能を簡単にAPIで提供出来てしまう!gem doorkeeperが凄い。 という記事を書いて1年以上経ちました。
doorkeeperも大分進化しており、Rails4対応もしている様なので再度検証してみることにしました。
下記作業ログになります。
検証環境
- ruby 2.0.0p353
- Rails 4.0.1
Gemfileにdoorkeer追加
Gemfileにdoorkeeperを追加します。
gem 'doorkeeper'
そしてbundle install
セットアップ
READMEに書いてある作業を行います。
rails generate doorkeeper:install
この時routesにuse_doorkeeper
が追加される
rake routes
の結果が下記。
GET /oauth/authorize/:code(.:format) doorkeeper/authorizations#show
oauth_authorization GET /oauth/authorize(.:format) doorkeeper/authorizations#new
POST /oauth/authorize(.:format) doorkeeper/authorizations#create
PATCH /oauth/authorize(.:format) doorkeeper/authorizations#update
PUT /oauth/authorize(.:format) doorkeeper/authorizations#update
DELETE /oauth/authorize(.:format) doorkeeper/authorizations#destroy
oauth_token POST /oauth/token(.:format) doorkeeper/tokens#create
oauth_applications GET /oauth/applications(.:format) doorkeeper/applications#index
POST /oauth/applications(.:format) doorkeeper/applications#create
new_oauth_application GET /oauth/applications/new(.:format) doorkeeper/applications#new
edit_oauth_application GET /oauth/applications/:id/edit(.:format) doorkeeper/applications#edit
oauth_application GET /oauth/applications/:id(.:format) doorkeeper/applications#show
PATCH /oauth/applications/:id(.:format) doorkeeper/applications#update
PUT /oauth/applications/:id(.:format) doorkeeper/applications#update
DELETE /oauth/applications/:id(.:format) doorkeeper/applications#destroy
oauth_authorized_applications GET /oauth/authorized_applications(.:format) doorkeeper/authorized_applications#index
oauth_authorized_application DELETE /oauth/authorized_applications/:id(.:format) doorkeeper/authorized_applications#destroy
oauth_token_info GET /oauth/token/info(.:format) doorkeeper/token_info#show
config/initializers/doorkeeper.rb
が追加されているので、resource_owner_authenticator
ブロックを下記に変更。
resource_owner_authenticator do
User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
end
またmigrateファイルも生成されているので、rake db:migrate
を行います。
rails g scaffold User name:string
rails generate doorkeeper:migration
rake db:migrate
これでセットアップ完了。
ブラウザからアクセスしてみる
http://localhost:3000/oauth/applications にアクセス。
アプリケーション一覧が表示される
アプリケーション作成してみる
アプリケーションの認証
codeの取得も普通に出来ました!
感想
相変わらずprovider側の実装は簡単に出来そうですが、APIの実装とclient側のサンプルについての情報はまだまだ多くないなぁと思いました。
参考
gem doorkeeperを用いたAPI側の実装する情報が載っていて便利。
http://blog.n-z.jp/blog/2013-10-08-doorkeeper-api-client.html