This post is also available in: 日本語 (Japanese)
Railsのgem Doorkeeper を使っていて、ローカル開発環境にてパスワード認証を行いたい場合の認証確認のサンプルコードと、"unsupported_grant_type"とエラーが出た場合の対処方法のメモです。
Contents
Doorkeeperでのパスワード認証のサンプルコード
1.rubyのコードから認証テストを実行
下記のコードを(例えば)doorkeeper-test.rbと保存します。
参考:https://github.com/doorkeeper-gem/doorkeeper/wiki/Using-Resource-Owner-Password-Credentials-flow
# doorkeeper-test.rb require 'oauth2' client_id = 'somethingxxx' # your client's id generated with rake db:setup client_secret = 'somethingxxx' # your client's secret site = "http://localhost:3000/" # your provider server, mine is running on localhost user_email = 'somethingxxx@amelt.net' user_password = 'somethingxxx' client = OAuth2::Client.new(client_id, client_secret, :site => site) token = client.password.get_token(user_email, user_password) token.get('/api/v1/somethingxxx.json')
次に、保存した(例えば)doorkeeper-test.rbを、以下のようにコマンドラインから実行します。
cd "doorkeeper-test.rbが置いてあるフォルダ" ruby doorkeeper-test.rb
2.curlコマンドからpostして認証テストを実行
もしくは、curlコマンドからpostして、Doorkeeperでのパスワード認証テストを行うこともできます。
curl -F grant_type=password \ -F username=somethingxxx@amelt.net \ -F password=somethingxxx \ -X POST http://localhost:3000/oauth/token
パスワード認証で"unsupported_grant_type"と出る場合の対処
下記のようなエラーの場合、次のように対処します。
{"error":"unsupported_grant_type","error_description":"The authorization grant type is not supported by the authorization server."}
config/initializers/doorkeeper.rb の Doorkeeper.configure do のループの"外側に"、以下の一行を追加します。
#config/initializers/doorkeeper.rb Doorkeeper.configure do end Doorkeeper.configuration.token_grant_types << "password"