He estado trabajando en este tema durante un par de semanas y no puedo encontrar una solución para mi vida. El hecho de que no haya encontrado documentación decente (en el sitio web de Drupal o en cualquier otro lugar) tampoco ayuda. Y las preguntas que ya están aquí están desactualizadas (Servicios 2.x).
Estoy tratando de crear un servicio REST para un sitio respaldado por Drupal Commerce. Por ahora, todo lo que el servicio debe hacer es permitir operaciones CRUD básicas en el recurso Order, y estar asegurado con OAuth, OAuth 2.0 no es necesario. También se debe invocar con un script en un servidor, por lo que es imposible volver a dirigir el inicio de sesión (todo se hace con autenticación de dos patas).
La pila actual es:
- PHP 5.3.15
- Drupal 7.15
- Perfil de Kickstart de Commerce (7.x-2.0-rc1)
- Servicios 7.x-3.2
- OAuth 7.x-3.0 + 18-dev
- Autenticación OAuth 7.x-3.2
- Servidor REST 7.x-3.2
- Commerce Services 7.x-1.x-dev (Este es el módulo al que he agregado mi código de pedido personalizado)
De alguna manera, puedo hacer que las funciones de Recuperar / Índice funcionen para pedidos si uso una biblioteca PHP de OAuth y solo llamo a la solicitud de token cada vez (ni siquiera estoy seguro de lo que está sucediendo allí, excepto que se autentica ...). Sin embargo, si intento enviar POST a pedidos y creo un pedido, obtengo 406 con el script y 401 cuando intento una solicitud POST directa desde la consola REST en Google Chrome, incluso cuando OAuth está desactivado.
Esto ha hecho que la depuración sea una pesadilla ya que no tengo idea de lo que está sucediendo dentro de mi función de creación. Intenté despojarlo de su lógica de creación de pedidos y solo hice eco de la carga útil de la solicitud. Todavía recibo los errores 406/401.
Supongo que obtengo los errores 401 porque los pedidos requieren una autenticación de usuario (incluso si OAuth está desactivado para el servicio).
Sin embargo, no entiendo por qué recibo los errores 406. Acepto application / json, que es lo que mi servidor REST está configurado para devolver.
Los pedidos no se creaban incluso antes de comentar la lógica de creación de pedidos. (Que uso en otra parte del sitio de manera efectiva).
Apreciación por adelantado.
-T
Respuestas:
Obtener solicitudes no necesitaba autenticación de sesión, POST, PUT, DELETE requieren autenticación de sesión para conocer al usuario y verificar si tiene los permisos correctos para completar la solicitud o no.
La autenticación de Oauth tiene muchos tipos de autenticación. Debe asegurarse de que es una autenticación del usuario y no de una aplicación (por ejemplo) para que la solicitud esté autorizada a completarse.
fuente
¿Ha verificado lo mismo al desactivar la autenticación oAuth? Si no, pruebe después de devolver un jj obj de muestra en su llamada de servicio.
fuente