私はこの問題に数週間取り組んでいますが、私の人生の解決策を見つけることができません。(DrupalのWebサイトや他のどこかで)適切なドキュメントが見つからなかったという事実も役に立ちません。そして、すでにここにある質問は時代遅れです(Services 2.x)。
Drupal Commerceが支援するサイト用のRESTサービスを作成しようとしています。現時点では、サービスが行う必要があるのは、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ライブラリを使用し、トークン要求を毎回呼び出すだけで、取得/インデックス関数をOrdersで機能させることができます(認証されていることを除いて、そこで何が行われているのかさえわかりません)。注文にPOSTして注文を作成しようとすると、OAuthが無効になっている場合でも、スクリプトで406を取得し、Google ChromeのRESTコンソールから直接POSTリクエストを試行すると401を取得します。
作成関数の内部で何が起こっているのか私にはわからないので、これはデバッグを悪夢にしました。注文作成ロジックを取り除いて、リクエストペイロードをエコーバックしました。それでも406/401エラーが発生します。
注文にはユーザー認証が必要なため(サービスでOAuthがオフになっている場合でも)、401エラーが発生すると思います。
しかし、なぜ406エラーが発生するのか理解できません。私は、RESTサーバーが返すように設定されているapplication / jsonを受け入れます。
注文作成ロジックをコメントアウトする前でも、注文は作成されていませんでした。(サイトの他の場所で効果的に使用しているものです。)
事前に感謝します。
-T