บริการ Ouputh ของ Drupal


8

ฉันทำงานเกี่ยวกับเรื่องนี้มาสองสามสัปดาห์แล้วและฉันไม่สามารถหาทางออกให้กับชีวิตของฉันได้ ความจริงที่ว่าฉันไม่พบเอกสารที่เหมาะสม (บนเว็บไซต์ของ Drupal หรือที่อื่น ๆ ) ก็ไม่มีประโยชน์เช่นกัน และคำถามที่มีอยู่แล้วในที่นี้ล้าสมัย (บริการ 2.x)

ฉันกำลังพยายามสร้างบริการ REST สำหรับไซต์ที่ได้รับการสนับสนุน Drupal Commerce สำหรับตอนนี้บริการทั้งหมดจะต้องทำเพื่อให้สามารถดำเนินการ CRUD ขั้นพื้นฐานบนทรัพยากรการสั่งซื้อและปลอดภัยด้วย OAuth, OAuth 2.0 ไม่จำเป็น มันจะต้องถูกเรียกด้วยสคริปต์บนเซิร์ฟเวอร์ดังนั้นการลงชื่อเข้าใช้อีกครั้งจะเป็นไปไม่ได้

สแต็กปัจจุบันคือ:

  • 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
  • บริการด้านการพาณิชย์ 7.x-1.x-dev (นี่คือโมดูลที่ฉันได้เพิ่มรหัสคำสั่งซื้อที่กำหนดเองไป)

ฉันสามารถรับฟังก์ชั่น Retrieve / Index เพื่อใช้งานคำสั่งซื้อได้ถ้าฉันใช้ไลบรารี OAuth PHP และเพียงเรียกคำขอโทเค็นทุกครั้ง (ฉันไม่แน่ใจด้วยซ้ำว่าเกิดอะไรขึ้นยกเว้นว่ามันเป็นของแท้ ... ) หากฉันพยายาม POST to Orders และสร้างคำสั่งซื้อฉันจะได้รับ 406 พร้อมสคริปต์และ 401 เมื่อฉันลองคำขอ POST โดยตรงจาก REST Console ใน Google Chrome แม้ว่า OAuth จะถูกปิดใช้งาน

สิ่งนี้ทำให้การดีบักฝันร้ายเพราะฉันไม่รู้ว่าเกิดอะไรขึ้นในฟังก์ชั่นการสร้างของฉัน ฉันพยายามลอกมันออกมาเป็นตรรกะการสร้างคำสั่งซื้อแล้วก็สะท้อนกลับไปที่เพย์โหลดคำขอ ยังคงได้รับข้อผิดพลาด 406/401

ฉันถือว่าฉันได้รับข้อผิดพลาด 401 เนื่องจากคำสั่งซื้อต้องการการตรวจสอบผู้ใช้ (แม้ว่า OAuth จะปิดใช้งานสำหรับบริการ)

ฉันไม่เข้าใจว่าทำไมฉันถึงได้รับข้อผิดพลาด 406 ครั้ง ฉันยอมรับ application / json ซึ่งเป็นสิ่งที่เซิร์ฟเวอร์ REST ของฉันตั้งค่าให้ส่งคืน

คำสั่งซื้อไม่ได้ถูกสร้างขึ้นก่อนที่ฉันจะแสดงความคิดเห็นเกี่ยวกับตรรกะการสร้างคำสั่งซื้อ (ซึ่งฉันใช้ที่อื่นในเว็บไซต์ได้อย่างมีประสิทธิภาพ)

ขอบคุณล่วงหน้า
-T


ในไม่กี่เดือนที่ผ่านมาโมดูลบริการได้รับการอัปเดตเพื่อให้คุณต้องส่งโทเค็นในส่วนหัวสำหรับคำขอ POST, PUT และ DELETE ทั้งหมด ตรวจสอบให้แน่ใจว่านี่ไม่ใช่ปัญหาที่คุณมี: drupal.org/node/2013781สิ่งนี้ไม่ส่งผลต่อคำขอ GET
CR47

ฉันขอแนะนำให้ตรวจสอบRESTwsนี้จะอยู่ในแกน D8
kqw

คำตอบ:


1

รับคำขอไม่จำเป็นต้องมีการรับรองความถูกต้องของเซสชันPOST, PUT, DELETEต้องการการรับรองความถูกต้องของเซสชันเพื่อรู้จักผู้ใช้และตรวจสอบว่าเขามีสิทธิ์ที่ถูกต้องในการดำเนินการตามคำขอหรือไม่

การรับรองความถูกต้อง Oauth มีการรับรองความถูกต้องหลายประเภทคุณต้องตรวจสอบให้แน่ใจว่าคุณกำลังรับรองความถูกต้องของผู้ใช้ที่ไม่ใช่แอป (ตัวอย่าง) ดังนั้นการร้องขอจะได้รับอนุญาตให้เสร็จสมบูรณ์


0

คุณได้ตรวจสอบสิ่งเดียวกันเมื่อปิดการรับรองความถูกต้อง oAuth หรือไม่ ถ้าไม่ลองใช้แล้วส่งคืน json obj ตัวอย่างในบริการโทรศัพท์ของคุณ


ยินดีต้อนรับสู่ Drupal Answers! กรุณาอย่าโพสต์ความคิดเห็นหรือคำถามเป็นคำตอบ นี่ไม่ใช่ฟอรัมและคำตอบจะไม่ถูกใช้เพื่อถามคำถาม OP (เมื่อคุณมีชื่อเสียงมากพอคุณจะได้รับอนุญาตให้โพสต์ความคิดเห็น)
ฟรี Radical
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.