Я работаю над этой проблемой уже пару недель, и я не могу найти решение для моей жизни. Тот факт, что я не нашел достойной документации (на веб-сайте Drupal или где-либо еще), также не поможет. И вопросы уже здесь устарели (Сервисы 2.x).
Я пытаюсь создать REST-сервис для сайта, поддерживаемого Drupal Commerce. На данный момент все, что должен сделать сервис - это разрешить базовые операции CRUD на ресурсе Order и быть защищенным с помощью OAuth, OAuth 2.0 не требуется. Он также должен вызываться сценарием на сервере, поэтому перенаправление входа в систему невозможно (все выполняется с помощью двухсторонней аутентификации).
Текущий стек:
- PHP 5.3.15
- Drupal 7.15
- Профиль Commerce Kickstart (7.x-2.0-rc1)
- Услуги 7.x-3.2
- OAuth 7.x-3.0 + 18-dev
- Аутентификация OAuth 7.x-3.2
- REST Server 7.x-3.2
- Commerce Services 7.x-1.x-dev (это модуль, в который я добавил свой код заказа)
Я могу заставить функции Retrieve / Index работать для Orders, если я использую библиотеку OAuth PHP и просто каждый раз вызываю запрос токена (я даже не уверен, что там происходит, за исключением того, что он аутентифицируется ...). Если я попытаюсь выполнить POST для заказов и создать заказ, то получу 406 со сценарием и 401 при попытке прямого запроса POST из консоли REST в Google Chrome, даже если OAuth отключен.
Это сделало отладку кошмаром, так как я понятия не имею, что происходит внутри моей функции создания. Я попытался убрать из него логику создания заказа и просто отразить полезную нагрузку запроса. Все еще получите ошибки 406/401.
Я предполагаю, что получаю 401 ошибки, потому что заказы требуют аутентификации пользователя (даже если OAuth отключен для службы).
Я не понимаю, почему я получаю 406 ошибок, хотя. Я принимаю application / json, и это мой сервер REST для возврата.
Заказы не создавались даже до того, как я прокомментировал логику создания заказов. (Который я эффективно использую в другом месте на сайте.)
Оценка заранее.
-T
Ответы:
Для получения запросов не требовалась аутентификация сеанса, для POST, PUT, DELETE требуется аутентификация сеанса, чтобы узнать пользователя и проверить, есть ли у него права на выполнение запроса или нет.
У аутентификации Oauth есть много типов аутентификации. Вы должны убедиться, что вы аутентифицируете пользователя, а не приложение (например), поэтому запрос авторизован для выполнения.
источник
Вы проверяли то же самое при отключении аутентификации oAuth? Если нет, попробуйте после возвращения образца json obj в сервисную службу.
источник