REST APIを実装し、ドアキーパーで保護しました。私はそれにアクセスするための小さなクライアントプログラムを作成しましたが、リソース所有者の資格情報フローを使用して正常に動作します。
現在、クライアントのクレデンシャルフローを使用して呼び出しを実装しようとしています。だから私はリンクの例に従ってきました。
GETリクエストを使用している場合はすべてうまく機能しますが、POSTリクエストを使用している場合は。を取得し401 Unauthorized
ます。これは、リソース所有者を必要としないメソッドの呼び出しです。
APIコントローラーに関連するものは次のとおりです。
doorkeeper_for :all
スコープを実装していないか、そのようなものは何も実装していません(必要ですか?)。
私のクライアントコードは次のようになります(githubの例とまったく同じです):
require 'rest-client'
require 'json'
client_id = 'my_client_id...'
client_secret = 'my_client_secret...'
response = RestClient.post 'http://localhost:3000/oauth/token', {
grant_type: 'client_credentials',
client_id: client_id,
client_secret: client_secret
}
token = JSON.parse(response)["access_token"]
# this line works great:
RestClient.get 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }
# this line always fails (401 Unauthorized):
RestClient.post 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }
私が間違っているかもしれない何か考えはありますか?クライアントのクレデンシャルフローを有効にするために、アプリケーションで何か特別なことをする必要がありますか?