Drupal Services OAuth

8

Je travaille sur ce problème depuis quelques semaines maintenant, et je ne trouve pas de solution pour ma vie. Le fait que je n'ai trouvé aucune documentation décente (sur le site Web de Drupal ou ailleurs) n'aide pas non plus. Et les questions déjà posées ici sont dépassées (Services 2.x).

J'essaie de créer un service REST pour un site soutenu par Drupal Commerce. Pour l'instant, tout ce que le service doit faire, c'est autoriser les opérations CRUD de base sur la ressource Order et être sécurisé avec OAuth, OAuth 2.0 n'est pas nécessaire. Il doit également être appelé avec un script sur un serveur, donc les redirection de connexion sont impossibles (tout se fait avec une authentification à 2 pattes).

La pile actuelle est:

  • PHP 5.3.15
  • Drupal 7.15
  • Profil Commerce Kickstart (7.x-2.0-rc1)
  • Services 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Authentification OAuth 7.x-3.2
  • Serveur REST 7.x-3.2
  • Commerce Services 7.x-1.x-dev (C'est le module auquel j'ai ajouté mon code de commande personnalisé)

Je peux en quelque sorte faire fonctionner les fonctions Retrieve / Index pour Orders si j'utilise une bibliothèque PHP OAuth et que j'appelle simplement la demande de jeton à chaque fois (je ne suis même pas sûr de ce qui se passe là-bas, sauf qu'il s'authentifie ...). Si j'essaie de POSTER sur commandes et de créer une commande, j'obtiens 406 avec le script et 401 lorsque j'essaie une demande POST directe à partir de la console REST dans Google Chrome, même lorsque OAuth est désactivé.

Cela a fait du débogage un cauchemar car je n'ai aucune idée de ce qui se passe dans ma fonction de création. J'ai essayé de le dépouiller de sa logique de création de commande et de renvoyer simplement la charge utile de la demande. Obtenez toujours les erreurs 406/401.

Je suppose que j'obtiens les erreurs 401 car les commandes nécessitent une authentification utilisateur (même si OAuth est désactivé pour le service).

Je ne comprends pas pourquoi j'obtiens les erreurs 406. J'accepte application / json, ce que mon serveur REST est configuré pour renvoyer.

Les commandes n'étaient pas créées avant même que je ne commente la logique de création des commandes. (Que j'utilise efficacement ailleurs sur le site.)

Appréciation à l'avance.
-T

tynor
la source
Au cours des derniers mois, le module de services a été mis à jour de sorte que vous devez envoyer un jeton dans l'en-tête pour toutes les demandes POST, PUT et DELETE. Assurez-vous que ce n'est pas le problème que vous rencontrez: drupal.org/node/2013781 Cela n'affecte pas les requêtes GET.
CR47
Je suggère de vérifier RESTws , ce sera dans le noyau D8.
kqw

Réponses:

1

Obtenir les demandes n'a pas eu besoin d'authentification de session, POST, PUT, DELETE nécessite une authentification de session pour connaître l'utilisateur et vérifier s'il dispose des autorisations nécessaires pour terminer la demande ou non.

L'authentification Oauth a de nombreux types d'authentification, vous devez vous assurer que vous êtes l'authentification de l'utilisateur et non de l'application (par exemple) afin que la demande soit autorisée à se terminer.

Mohammed Gomma
la source
0

Avez-vous vérifié la même chose en désactivant l'authentification oAuth? Sinon, essayez après avoir renvoyé un exemple d'objet json lors de votre appel de service.

Bala.D
la source
Bienvenue dans Drupal Answers! Veuillez ne pas poster de commentaire ou de question comme réponse. Ce n'est pas un forum et les réponses ne doivent jamais être utilisées pour poser une question au PO. (Une fois que vous aurez suffisamment de réputation , vous serez autorisé à poster un commentaire.)
Free Radical