Drupal Services OAuth


8

Ho lavorato su questo problema per un paio di settimane e non riesco a trovare una soluzione per la mia vita. Il fatto di non aver trovato alcuna documentazione decente (sul sito Web di Drupal o altrove) non è di aiuto. E le domande già qui sono obsolete (Servizi 2.x).

Sto cercando di creare un servizio REST per un sito supportato da Drupal Commerce. Per ora tutto ciò che il servizio deve fare è consentire operazioni CRUD di base sulla risorsa Ordine ed essere protetto con OAuth, OAuth 2.0 non è necessario. Deve anche essere chiamato con uno script su un server, quindi i reindirizzamenti dell'accesso sono impossibili (tutto viene eseguito con l'autenticazione a 2 gambe).

Lo stack corrente è:

  • PHP 5.3.15
  • Drupal 7.15
  • Profilo di Commerce Kickstart (7.x-2.0-rc1)
  • Servizi 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Autenticazione OAuth 7.x-3.2
  • Server REST 7.x-3.2
  • Commerce Services 7.x-1.x-dev (Questo è il modulo a cui ho aggiunto il mio codice ordine personalizzato)

Posso in qualche modo far funzionare le funzioni Retrieve / Index per gli ordini se uso una libreria PHP OAuth e chiamo semplicemente la richiesta di token ogni volta (non sono nemmeno sicuro di cosa stia succedendo lì, tranne che autentica ...). Se provo a POSTARE agli ordini e creo un ordine, ottengo 406 con lo script e 401 quando provo una richiesta POST diretta dalla console REST in Google Chrome, anche quando OAuth è disabilitato.

Questo ha reso il debug un incubo poiché non ho idea di cosa stia succedendo nella mia funzione di creazione. Ho provato a toglierlo dalla sua logica di creazione degli ordini e ho semplicemente fatto eco al payload della richiesta. Ricevi ancora gli errori 406/401.

Presumo di ricevere gli errori 401 perché gli ordini richiedono un'autenticazione utente (anche se OAuth è disattivato per il servizio).

Non capisco perché sto ricevendo gli errori 406 però. Accetto application / json, che è ciò che il mio server REST è impostato per restituire.

Gli ordini non venivano creati nemmeno prima che commentassi la logica di creazione degli ordini. (Che uso efficacemente altrove nel sito.)

Apprezzamento in anticipo.
-T


Negli ultimi mesi il modulo dei servizi è stato aggiornato in modo da richiedere l'invio di un token nell'intestazione per tutte le richieste POST, PUT e DELETE. Assicurati che questo non sia il problema che stai riscontrando : drupal.org/node/2013781 Ciò non influisce sulle richieste GET.
CR47

Suggerisco di dare un'occhiata a RESTws , questo sarà nel core D8.
kqw,

Risposte:


1

Ottieni richieste non ha richiesto l'autenticazione della sessione, POST, PUT, DELETE richiedono l'autenticazione della sessione per conoscere l'utente e verificare se dispone delle autorizzazioni giuste per completare la richiesta o meno.

L'autenticazione Oauth ha molti tipi di autenticazione che è necessario assicurarsi di essere l'autenticazione dell'utente e non di un'app (ad esempio), quindi la richiesta è autorizzata a completare.


0

Hai verificato lo stesso allo spegnimento dell'autenticazione oAuth? In caso contrario, provare dopo aver restituito un json obj di esempio sulla chiamata di servizio.


Benvenuto in Drupal Answers! Si prega di non pubblicare commenti o domande come risposta. Questo non è un forum e le risposte non devono mai essere utilizzate per porre una domanda al PO. (Una volta che avrai abbastanza reputazione , ti sarà permesso di pubblicare un commento.)
Radicale gratuito
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.