Dịch vụ Drupal OAuth


8

Tôi đã làm việc về vấn đề này được vài tuần và tôi không thể tìm ra giải pháp cho cuộc sống của mình. Việc tôi không tìm thấy tài liệu nào phù hợp (trên trang web của Drupal, hoặc bất cứ nơi nào khác) cũng không giúp được gì. Và các câu hỏi đã có ở đây đã lỗi thời (Dịch vụ 2.x).

Tôi đang cố gắng tạo dịch vụ REST cho trang web được hỗ trợ bởi Drupal Commerce. Hiện tại, tất cả các dịch vụ phải làm là cho phép các hoạt động CRUD cơ bản trên tài nguyên Đơn hàng và được bảo mật bằng OAuth, OAuth 2.0 không cần thiết. Nó cũng phải được gọi với một tập lệnh trên máy chủ, vì vậy không thể đăng nhập lại trực tiếp (mọi thứ được thực hiện với xác thực 2 chân).

Ngăn xếp hiện tại là:

  • PHP 5.3.15
  • Drupal 7,15
  • Hồ sơ khởi động thương mại (7.x-2.0-rc1)
  • Dịch vụ 7.x-3.2
  • OAuth 7.x-3.0 + 18-dev
  • Xác thực OAuth 7.x-3.2
  • Máy chủ REST 7.x-3.2
  • Dịch vụ thương mại 7.x-1.x-dev (Đây là mô-đun tôi đã thêm mã Đơn hàng tùy chỉnh của mình vào)

Tôi có thể làm cho các hàm Lấy / Chỉ mục hoạt động cho Đơn hàng nếu tôi sử dụng thư viện OAuth PHP và chỉ gọi yêu cầu mã thông báo mỗi lần (Tôi thậm chí không chắc chắn những gì đang diễn ra ở đó, ngoại trừ việc nó xác thực ...). Nếu tôi cố gắng POST vào Đơn hàng và tạo đơn hàng, tôi nhận được 406 với tập lệnh và 401 khi tôi thử yêu cầu POST trực tiếp từ Bảng điều khiển REST trong Google Chrome, ngay cả khi OAuth bị tắt.

Điều này đã khiến việc gỡ lỗi trở thành một cơn ác mộng vì tôi không biết điều gì đang diễn ra bên trong chức năng tạo của mình. Tôi đã thử tước bỏ logic tạo đơn hàng của nó và chỉ phản hồi lại tải trọng yêu cầu. Vẫn nhận được lỗi 406/401.

Tôi giả sử tôi nhận được lỗi 401 vì các đơn đặt hàng yêu cầu xác thực người dùng (ngay cả khi OAuth bị tắt cho dịch vụ).

Tôi không hiểu tại sao tôi nhận được 406 lỗi. Tôi chấp nhận application / json, đó là những gì máy chủ REST của tôi được đặt để trả về.

Đơn đặt hàng đã không được tạo ngay cả trước khi tôi nhận xét logic tạo đơn hàng. (Mà tôi sử dụng ở nơi khác trong trang web một cách hiệu quả.)

Đánh giá cao trước.
-T


Trong vài tháng qua, mô-đun dịch vụ đã được cập nhật để bạn được yêu cầu gửi mã thông báo trong tiêu đề cho tất cả các yêu cầu POST, PUT và DELETE. Đảm bảo đây không phải là vấn đề bạn gặp phải: drupal.org/node/2013781 Điều này không ảnh hưởng đến các yêu cầu GET.
CR47

Tôi đề nghị kiểm tra RESTws , cái này sẽ nằm trong lõi D8.
kqw

Câu trả lời:


1

Nhận yêu cầu không cần xác thực phiên, POST, PUT, DELETE yêu cầu xác thực phiên để biết người dùng và kiểm tra xem anh ta có quyền để hoàn thành yêu cầu hay không.

Xác thực Oauth có nhiều loại xác thực, bạn phải đảm bảo rằng bạn đang xác thực người dùng chứ không phải ứng dụng (ví dụ) để yêu cầu được ủy quyền hoàn thành.


0

Bạn đã kiểm tra tương tự khi tắt xác thực oAuth chưa? Nếu không, hãy thử sau khi trả lại một mẫu json obj trong cuộc gọi dịch vụ của bạn.


Chào mừng đến với câu trả lời của Drupal! Xin vui lòng không gửi bình luận hoặc câu hỏi như một câu trả lời. Đây không phải là một diễn đàn và câu trả lời sẽ không bao giờ được sử dụng để hỏi OP một câu hỏi. (Một khi bạn có đủ danh tiếng , bạn sẽ được phép đăng bình luận.)
Free Radical
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.