web-dev-qa-db-ja.com

DrupalサービスOAuth

私はこの問題に数週間取り組んでいますが、私の人生の解決策を見つけることができません。 (DrupalのWebサイトや他のどこかで)適切なドキュメントが見つからなかったという事実も役に立ちません。そして、すでにここにある質問は時代遅れです(Services 2.x)。

私はREST Commerceが支援するサイトのDrupalサービスを作成しようとしています。現時点では、サービスが行う必要があるのは、Orderリソースでの基本的なCRUD操作を許可することだけであり、OAuthで保護されているため、OAuth 2.0は必要ありません。また、サーバー上のスクリプトを使用して呼び出す必要があるため、ログインのリダイレクトは不可能です(すべてが2-legged認証で行われます)。

現在のスタックは:

  • PHP 5.3.15
  • Drupal 7.15
  • コマースキックスタートプロファイル(7.x-2.0-rc1)
  • サービス7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • OAuth認証7.x-3.2
  • RESTサーバー7.x-3.2
  • Commerce Services 7.x-1.x-dev(これは、カスタム注文コードを追加したモジュールです)

OAuth PHPライブラリを使用し、毎回トークン要求を呼び出すだけで、注文に対してRetrieve/Index関数を機能させることができます(何が起こっているのかさえわかりません)その上で、認証することを除いて...)。 OrdersにPOSTを試みて注文を作成しようとすると、スクリプトで406を取得し、POSTからの直接RESTリクエストを試行すると401を取得します。 OAuthが無効になっている場合でも、Google Chromeのコンソール。

Create関数の内部で何が起こっているのか私にはわからないので、これはデバッグを悪夢にしました。注文作成ロジックを取り除いて、リクエストペイロードをエコーバックしました。それでも406/401エラーが発生します。

注文でユーザー認証が必要なため、401エラーが発生すると思います(サービスでOAuthがオフになっている場合でも)。

しかし、なぜ406エラーが発生するのか理解できません。私はRESTサーバーが返すように設定されているapplication/jsonを受け入れます。

注文作成ロジックをコメントアウトする前でも、注文は作成されていませんでした。 (サイトの他の場所で効果的に使用しているものです。)

事前に感謝します。
-T

8
tynor

Getリクエストはセッション認証を必要としませんでしたPOST、PUT、DELETEユーザーを知るためにセッション認証が必要であり、リクエストを完了するための適切な権限があるかどうかを確認します。

OAuth認証には多くの種類の認証があります。たとえば、アプリではなくユーザーを認証して、リクエストの完了を承認する必要があります。

1
Mohammed Gomma

oAuth認証をオフにするときにも同じことを確認しましたか?そうでない場合は、サービス呼び出しでサンプルjson objを返してから試してください。

0
Bala.D