Saya telah mengerjakan masalah ini selama beberapa minggu sekarang, dan saya tidak dapat menemukan solusi untuk kehidupan saya. Fakta bahwa saya tidak menemukan dokumentasi yang layak (di situs web Drupal, atau di tempat lain) juga tidak membantu. Dan pertanyaan yang sudah ada di sini sudah usang (Layanan 2.x).
Saya mencoba membuat layanan REST untuk situs yang didukung Drupal Commerce. Untuk saat ini semua layanan yang harus dilakukan adalah mengizinkan operasi CRUD dasar pada sumber daya Order, dan diamankan dengan OAuth, OAuth 2.0 tidak diperlukan. Itu juga harus dipanggil dengan skrip di server, jadi masuk kembali arahan tidak mungkin (semuanya dilakukan dengan otentikasi 2-legged).
Tumpukan saat ini adalah:
- PHP 5.3.15
- Drupal 7.15
- Profil Commerce Kickstart (7.x-2.0-rc1)
- Layanan 7.x-3.2
- OAuth 7.x-3.0 + 18-dev
- Otentikasi OAuth 7.x-3.2
- REST Server 7.x-3.2
- Layanan Perdagangan 7.x-1.x-dev (Ini adalah modul yang telah saya tambahkan kode Pesanan khusus saya ke)
Saya bisa mendapatkan fungsi Retrieve / Index berfungsi untuk Pesanan jika saya menggunakan perpustakaan PHP OAuth dan cukup memanggil permintaan token setiap kali (saya bahkan tidak yakin apa yang terjadi di sana, kecuali itu mengotentikasi ...). Jika saya mencoba POST ke Pesanan dan membuat pesanan, saya mendapatkan 406 dengan skrip, dan 401 ketika saya mencoba permintaan POST langsung dari REST Console di Google Chrome, bahkan ketika OAuth dinonaktifkan.
Ini telah menjadikan debugging sebagai mimpi buruk karena saya tidak tahu apa yang terjadi di dalam fungsi create saya. Saya mencoba melepaskannya dari logika pembuatan pesanan dan hanya mengulangi permintaan payload. Masih mendapatkan kesalahan 406/401.
Saya menganggap saya mendapatkan kesalahan 401 karena pesanan memerlukan otentikasi pengguna (bahkan jika OAuth dimatikan untuk layanan).
Saya tidak mengerti mengapa saya mendapatkan 406 kesalahan. Saya menerima aplikasi / json, yang merupakan server REST saya diatur untuk kembali.
Pesanan tidak dibuat bahkan sebelum saya mengomentari logika pembuatan pesanan. (Yang saya gunakan di tempat lain di situs secara efektif.)
Apresiasi di muka.
-T
Jawaban:
Dapatkan permintaan tidak memerlukan otentikasi sesi, POST, PUT, DELETE memerlukan otentikasi sesi untuk mengetahui pengguna dan memeriksa apakah dia memiliki izin yang tepat untuk menyelesaikan permintaan atau tidak.
Otentikasi Oauth memiliki banyak jenis auth Anda harus memastikan bahwa Anda mengotentikasi pengguna bukan aplikasi (misalnya) sehingga permintaan berwenang untuk menyelesaikan.
sumber
Sudahkah Anda memeriksa hal yang sama untuk mematikan otentikasi oAuth? Jika tidak, Cobalah setelah mengembalikan sampel json obj pada panggilan layanan Anda.
sumber