Drupal Services OAuth

8

Pracuję nad tym zagadnieniem od kilku tygodni i nie mogę znaleźć rozwiązania dla mojego życia. Fakt, że nie znalazłem żadnej porządnej dokumentacji (na stronie internetowej Drupala lub gdziekolwiek indziej) również nie pomaga. A pytania już tu zadane są nieaktualne (Usługi 2.x).

Próbuję utworzyć usługę REST dla witryny wspieranej przez Drupal Commerce. Na razie wszystko, co usługa musi zrobić, to zezwolić na podstawowe operacje CRUD na zasobie Order, i być zabezpieczonym OAuth, OAuth 2.0 nie jest konieczny. Musi być również wywoływany za pomocą skryptu na serwerze, więc przekierowanie logowania jest niemożliwe (wszystko odbywa się za pomocą uwierzytelniania 2-etapowego).

Obecny stos to:

  • PHP 5.3.15
  • Drupal 7.15
  • Profil Commerce Kickstart (7.x-2.0-rc1)
  • Usługi 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Uwierzytelnianie OAuth 7.x-3.2
  • Serwer REST 7.x-3.2
  • Commerce Services 7.x-1.x-dev (jest to moduł, do którego dodałem swój niestandardowy kod zamówienia)

Mogę w pewnym sensie uruchomić funkcje pobierania / indeksowania dla zamówień, jeśli korzystam z biblioteki OAuth PHP i po prostu wywołuję żądanie tokena za każdym razem (nawet nie jestem pewien, co się tam dzieje, poza tym, że uwierzytelnia się ...). Jeśli jednak spróbuję wysłać zamówienie do zamówień i utworzyć zamówienie, otrzymam 406 ze skryptem i 401, gdy spróbuję bezpośredniego żądania POST z konsoli REST w Google Chrome, nawet gdy OAuth jest wyłączony.

To sprawiło, że debugowanie stało się koszmarem, ponieważ nie mam pojęcia, co się dzieje w mojej funkcji tworzenia. Próbowałem usunąć go z logiki tworzenia zamówień i po prostu powtórzyć ładunek żądania. Nadal dostaję błędy 406/401.

Zakładam, że otrzymuję błędy 401, ponieważ zamówienia wymagają uwierzytelnienia użytkownika (nawet jeśli OAuth jest wyłączony dla usługi).

Nie rozumiem jednak, dlaczego dostaję błędy 406. Akceptuję aplikację / json, którą zwraca mój serwer REST.

Zamówienia nie były tworzone, nawet zanim skomentowałem logikę tworzenia zamówień. (Z którego skutecznie korzystam w innym miejscu witryny).

Docenienie z góry.
-T

tynor
źródło
W ciągu ostatnich kilku miesięcy moduł usług został zaktualizowany, abyś musiał wysyłać token w nagłówku dla wszystkich żądań POST, PUT i DELETE. Upewnij się, że to nie jest problem: drupal.org/node/2013781 Nie wpływa to na żądania GET.
CR47,
Sugeruję sprawdzenie RESTws , będzie to rdzeń D8.
kqw

Odpowiedzi:

1

Żądania Get nie wymagały uwierzytelnienia sesji, POST, PUT, DELETE wymagają uwierzytelnienia sesji, aby poznać użytkownika i sprawdzić, czy ma on odpowiednie uprawnienia do wykonania żądania, czy nie.

Uwierzytelnianie Oauth ma wiele rodzajów uwierzytelniania, musisz upewnić się, że uwierzytelniasz użytkownika, a nie aplikację (na przykład), aby żądanie zostało autoryzowane do wykonania.

Mohammed Gomma
źródło
0

Czy to samo sprawdziłeś po wyłączeniu uwierzytelniania oAuth? Jeśli nie, spróbuj po zwróceniu przykładowego obiektu json obj w zgłoszeniu serwisowym.

Bala.D
źródło
Witamy w Drupal Answers! Nie zamieszczaj komentarza ani pytania jako odpowiedzi. To nie jest forum, a odpowiedzi nigdy nie będą wykorzystywane do zadawania OP pytania. (Gdy będziesz mieć wystarczająco dużo reputacji , będziesz mógł opublikować komentarz.)
Bezpłatny Radical