1/9(土)〜11(月)で開発合宿に参加していました。
そこで oauth_adapter という gem を作ったので紹介します。
注意点
GitHub のドキュメント、テストがまだ全くないです。ある程度の動作確認はしていますが、もし変な挙動があれば Issue か Pull Request をください。
ドキュメントとテストは数日中に整備する予定です。
概要
これは oauth と oauth2 の2つを簡単に使い分ける手段を提供する gem です。
インストール方法
Gemfile に gem を追加します。
gem 'oauth_adapter'
使い方
まず、アプリケーションで使用する OAuth の provider を登録します。
# config/initialize/oauth_adapter.rb OAuthAdapter.configure do provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'], 'https://api.twitter.com' provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], 'https://api.github.com' end
もし omniauth と一緒に使う場合、代わりに下記のファイルを require
することで設定を省略できます。
# config/initialize/omniauth.rb require 'oauth_adapter/omniauth' Rails.application.config.middleware.use OmniAuth::Builder do provider :developer unless Rails.env.production? provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'] end
設定が済んだあとは OAuthAdapter.get_access_token
のメソッドによって 各 gem の AccessToken オブジェクトが取得できます。
OAuthAdapter.get_access_token(provider: :github, token: '<access_token>') #=> #<OAuth2::AccessToken:0x007f9d763e5b50... OAuthAdapter.get_access_token(provider: :twitter, token: '<access_token>', secret: '<token_secret>') #=> #<OAuth::AccessToken:0x007f9d763d5430...
あとは、 AccessToken の get
などのメソッドで API を使えます。
token = OAuthAdapter.get_access_token(provider: :github, token: '<access_token>') response = token.get 'user' JSON.parse(resposne.body) #=> {"login"=>"sinsoku", ...