Drupal Services OAuth

8

Estou trabalhando nesse problema há algumas semanas e não consigo encontrar uma solução para a minha vida. O fato de eu não encontrar documentação decente (no site do Drupal ou em qualquer outro lugar) também não ajuda. E as perguntas já aqui estão desatualizadas (Serviços 2.x).

Estou tentando criar um serviço REST para um site suportado pelo Drupal Commerce. Por enquanto, tudo o que o serviço deve fazer é permitir operações CRUD básicas no recurso Order e ser protegido com OAuth, o OAuth 2.0 não é necessário. Também deve ser chamado com um script em um servidor, para que as redirecionamentos de login sejam impossíveis (tudo é feito com autenticação em duas pernas).

A pilha atual é:

  • PHP 5.3.15
  • Drupal 7.15
  • Perfil do Commerce Kickstart (7.x-2.0-rc1)
  • Serviços 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Autenticação OAuth 7.x-3.2
  • Servidor REST 7.x-3.2
  • Serviços de Comércio 7.x-1.x-dev (Este é o módulo ao qual eu adicionei meu código de Pedido personalizado)

Posso fazer com que as funções Retrieve / Index funcionem para Orders se eu usar uma biblioteca PHP OAuth e apenas chamar a solicitação de token toda vez (nem tenho certeza do que está acontecendo lá, exceto que ela se autentica ...). Porém, se eu tentar fazer o POST para pedidos e criar um pedido, recebo 406 com o script e 401 quando tento uma solicitação POST direta do console REST no Google Chrome, mesmo quando o OAuth está desativado.

Isso tornou a depuração um pesadelo, pois não tenho idéia do que está acontecendo dentro da minha função de criação. Tentei retirar a lógica de criação de pedidos e refazer a carga útil da solicitação. Ainda obtém os erros 406/401.

Suponho que recebo os erros 401 porque os pedidos exigem uma autenticação do usuário (mesmo que o OAuth esteja desativado para o serviço).

Eu não entendo por que estou recebendo os erros 406. Eu aceito application / json, que é o que meu servidor REST está definido para retornar.

Os pedidos não estavam sendo criados antes mesmo de eu comentar a lógica de criação de pedidos. (Que eu uso em outros lugares do site de maneira eficaz.)

Apreciação antecipada.
-T

tynor
fonte
Nos últimos meses, o módulo de serviços foi atualizado para que você precise enviar um token no cabeçalho para todas as solicitações POST, PUT e DELETE. Verifique se esse não é o problema que você está tendo: drupal.org/node/2013781 Isso não afeta as solicitações GET.
CR47 19/09/2013
Sugiro verificar RESTws , isso será no núcleo D8.
kqw

Respostas:

1

As solicitações de obtenção não precisavam de autenticação de sessão, POST, PUT, DELETE exigem autenticação de sessão para conhecer o usuário e verificar se ele possui permissões corretas para concluir a solicitação ou não.

A autenticação Oauth tem muitos tipos de autenticação. Você deve garantir que está autenticando o usuário e não o aplicativo (por exemplo), para que a solicitação esteja autorizada a ser concluída.

Mohammed Gomma
fonte
0

Você verificou o mesmo ao desativar a autenticação oAuth? Caso contrário, tente depois de retornar uma amostra de json obj em sua chamada de serviço.

Bala.D
fonte
Bem-vindo ao Drupal Answers! Por favor, não poste um comentário ou pergunta como resposta. Este não é um fórum e nunca serão usadas respostas para fazer uma pergunta ao PO. (Uma vez que você tem bastante reputação , você terá permissão para postar um comentário.)
Free Radical