Zaimplementowałem interfejs REST API i zabezpieczyłem go odźwiernym. Napisałem mały program klienta, aby uzyskać do niego dostęp i działa dobrze przy użyciu przepływu danych poświadczającego właściciela zasobów.Pisanie w OAuth za pomocą poświadczeń klienta z Doorkeeper
Teraz próbuję wykonać połączenie przy użyciu poświadczeń klienta flow. Więc poszedłem za przykładem w linku.
Wszystko działa wspaniale, gdy używam żądania GET, ale gdy używam żądania POST, otrzymuję numer 401 Unauthorized
. Jest to wywołanie metody, która nie wymaga właściciela zasobu.
Jedynym istotnym rzeczą mam w moim kontrolera API:
doorkeeper_for :all
nie wprowadziły żadnych zakresów ani nic w tym rodzaju (mam obowiązek?).
Mój klient kod wygląda następująco (dokładnie jak w example in 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}" }
jakiś pomysł co mogę robić źle? Czy jest coś specjalnego, co powinienem zrobić w mojej aplikacji, aby umożliwić przepływ poświadczeń klienta?
Czytanie odpowiedzi pomogło mi rozwiązać problem, który miałem. Dziękuję, że wróciłeś i rozwiązałeś to! – lyonsinbeta