Drupal Services OAuth


8

Я працюю над цим питанням вже пару тижнів, і не можу знайти рішення для мене. Те, що я не знайшов гідної документації (на веб-сайті Drupal чи деінде), також не допомагає. А питання тут уже застаріли (Послуги 2.x).

Я намагаюся створити послугу REST для веб-сайту, підтримуваного Drupal Commerce. Наразі всі послуги, які потрібно зробити, це дозволяти виконувати основні операції з CRUD на ресурсі Order, і бути захищеними OAuth, OAuth 2.0 не потрібен. Його також потрібно викликати зі скриптом на сервері, тому перенаправлення входу неможливо (все робиться за допомогою двосторонній аутентифікації).

Поточний стек:

  • PHP 5.3.15
  • Друпаль 7.15
  • Профіль торгівлі Kickstart (7.x-2.0-rc1)
  • Послуги 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Автентифікація OAuth 7.x-3.2
  • Сервер REST 7.x-3.2
  • Commerce Services 7.x-1.x-dev (Це модуль, до якого я додав свій власний код замовлення)

Я можу змусити функції Retrieve / Index працювати для замовлень, якщо я використовую бібліотеку PHP OAuth і просто щоразу дзвоню в запит маркера (я навіть не впевнений, що там відбувається, за винятком того, що він підтверджує автентифікацію ...). Якщо я спробую розмістити POST для замовлень та створити замовлення, я отримую 406 зі сценарієм та 401, коли я намагаюся отримати прямий запит POST з консолі REST в Google Chrome, навіть коли OAuth відключений.

Це зробило налагодження кошмаром, оскільки я не маю уявлення, що відбувається всередині моєї функції створення. Я спробував позбавити його логіки створення замовлення і просто повторював корисну навантаження запиту. Все ж отримайте помилки 406/401.

Я припускаю, що я отримую помилки 401, оскільки для замовлення потрібна автентифікація користувача (навіть якщо OAuth вимкнено для служби).

Я не розумію, чому я отримую 406 помилок. Я приймаю application / json, і це те, що мій сервер REST налаштований повернути.

Замовлення не створювались ще до того, як я прокоментував логіку створення замовлень. (Що я ефективно використовую в інших місцях сайту).

Оцінка заздалегідь.
-T


Протягом останніх кількох місяців модуль послуг оновлювався так, що вам потрібно буде надіслати маркер у заголовку для всіх запитів POST, PUT та DELETE. Переконайтеся, що це не проблема: drupal.org/node/2013781 Це не впливає на GET-запити.
CR47

Я пропоную перевірити RESTws , це буде в ядрі D8.
kqw

Відповіді:


1

Отримати запити не потрібно автентифікації сеансу, POST, PUT, DELETE вимагають аутентифікацію сеансу, щоб знати користувача та перевірити, чи має він права на виконання запиту чи ні.

Аутентифікація Oauth має багато типів аутентифікації, ви повинні переконатися, що ви перевіряєте автентифікацію користувачем, а не додатком (наприклад), тому запит має право виконати.


0

Ви перевірили те ж саме, щоб вимкнути аутентифікацію oAuth? Якщо ні, спробуйте після повернення зразка json obj у вашому службовому дзвінку.


Ласкаво просимо до відповідей Drupal! Будь ласка, не публікуйте коментар чи запитання як відповідь. Це не форум, і відповіді ніколи не використовуються, щоб задати питання ОП. (Після того, як у вас буде достатня репутація , вам дозволять розмістити коментар.)
Безкоштовний радикальний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.