Я реализовал 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}" }
Любая идея, что я могу делать неправильно? Есть ли что-то особенное, что я должен сделать в своем приложении, чтобы включить поток учетных данных клиента?