Tích hợp API Web Magento 2 ăn gì


9

Theo tài liệu dành cho nhà phát triển

API web kiểu tích hợp cho phép một lệnh gọi API web duy nhất chạy nhiều dịch vụ cùng một lúc để tích hợp hiệu quả hơn. Có thể xem ví dụ về hành vi này trong Danh mục nơi một lệnh gọi API web có thể tạo sản phẩm; nếu tải trọng của bạn bao gồm đối tượng kiểm kê và đối tượng phương tiện thì khung cũng sẽ tạo kho lưu trữ & phương tiện của sản phẩm trong một lệnh gọi API đó.

...

Tạo một tích hợp mới trên Magento Admin. Để tạo tích hợp, bấm Hệ thống> Tích hợp> Thêm Tích hợp mới. Hãy chắc chắn để hạn chế các tài nguyên mà tích hợp có thể truy cập.

Đó không phải là tất cả những gì rõ ràng, chính xác, một sự tích hợp là gì. Đoạn tài liệu đầu tiên chỉ ra sự tích hợp là (có thể?) Một cách để xâu chuỗi nhiều lệnh gọi API trong một yêu cầu HTTP. Tuy nhiên, không có ví dụ cú pháp nào về điều này. Ngoài ra, nếu tôi sử dụng thông tin trong đoạn tài liệu thứ hai, tôi có thể tạo một đối tượng tích hợp, nhưng không rõ tôi phải làm gì với điều này. Ngoài ra, đào sâu vào mã, các đối tượng tích hợp dường như sử dụng một đường dẫn mã xác thực khác.

Có ai có ý tưởng rõ ràng về "Tích hợp API" này là gì và cách chúng hoạt động không?

Câu trả lời:


7

Có 4 loại người dùng trong Magento 2 (xem \ Magento \ Authorization \ Model \ UserContextInterface ), bất kỳ ai trong số họ cũng có thể được sử dụng trong khi thực hiện các yêu cầu thông qua API web:

  • Người dùng ẩn danh (khách). Người dùng được coi là ẩn danh nếu không có mã thông báo hoặc cookie được sử dụng để thực hiện yêu cầu
  • Khách hàng. Mã thông báo hoặc cookie của khách hàng phải được chuyển cùng với yêu cầu
  • Quản trị viên. Mã thông báo quản trị hoặc cookie phải có mặt
  • Tích hợp. Mã thông báo truy cập tích hợp phải được chuyển theo kiểu OAuth 2.0 HOẶC yêu cầu phải được ký chính xác bằng khóa tiêu dùng, bí mật người tiêu dùng, mã thông báo truy cập, bí mật mã thông báo truy cập theo kiểu OAuth 1.0a

Tích hợp có thể được tạo tại System > Integration > Add New Integration, nó có thể được cấp quyền giống như bất kỳ người dùng Quản trị viên nào (cây ACL là như nhau). Yêu cầu API Web có thể được thực hiện thay mặt cho cả hai, quản trị viên và tích hợp. Điều khác biệt tích hợp từ người dùng quản trị viên là bên thứ 3 có thể truy xuất thông tin xác thực API web bằng cách bắt tay OAuth .

Bắt tay OAuth cho phép tự động tích hợp với hệ thống bên thứ ba nhiều người dùng (khi được bên thứ 3 hỗ trợ):

  • Trong quá trình tạo tích hợp, điền vào các trường tùy chọn Callback URLIdentity Link URL(cả hai nên được cung cấp bởi hệ thống bên thứ 3)
  • Khi bạn cố gắng kích hoạt tích hợp, bắt tay OAuth sẽ được kích hoạt
  • Một số dữ liệu sẽ được Magento gửi tới URL gọi lại bằng cách sử dụng yêu cầu POST từ máy chủ đến máy chủ. Url liên kết danh tính (trang đăng nhập trên hệ thống bên thứ 3) sẽ được mở trong cửa sổ bật lên và một số tham số GET sẽ được gửi
  • Sau khi xác thực thành công thông tin người dùng, bên thứ 3 sẽ yêu cầu Mã thông báo yêu cầu từ Magento và sau đó trao đổi nó với Mã thông báo truy cập. Nó cũng sẽ liên kết phiên bản Magento hiện tại với tài khoản người dùng trên các bản ghi riêng của mình. Tức là nhiều thương nhân Magento có thể có tài khoản trong cùng một CRM của bên thứ 3 và mọi tài khoản của người bán sẽ được gắn với ví dụ Magento của anh ta
  • Mã thông báo truy cập đã phát hành có thể được sử dụng để thực hiện các yêu cầu đối với API web Magento. Mã thông báo này sẽ được liên kết với bản ghi Tích hợp Magento và sẽ có quyền truy cập vào các tài nguyên được chọn trong APItab của trang chỉnh sửa Tích hợp

Lưu ý nhanh về việc gọi nhiều dịch vụ cùng một lúc, tính năng này được gọi là API tổng hợp và không có gì chung với loại người dùng Tích hợp.


Sửa tôi nếu tôi sai. Nhưng không có khóa tiêu dùng trong xác thực Magento 2. Tài liệu xác định rõ ràng rằng M2 thực hiện quy trình xác thực hai chân. Yêu cầu và truy cập. Như đã nêu ở đây devdocs.magento.com/guides/v2.2/get-started/authentication/ từ
vitoriodachef

2

Sự tích hợp ở đây là kịch bản mà các nhà tích hợp và nhà phát triển phương tiện sử dụng các dịch vụ web giao tiếp với hệ thống Magento thông qua API Magento. Họ có thể gọi một hoặc nhiều dịch vụ mà Magento cho phép quản trị viên định cấu hình trong Biểu mẫu tích hợp mới (Cuộn xuống trong màn hình đó để chọn API cụ thể hoặc chọn tất cả)

Do vấn đề bảo mật, Magento chỉ cho phép các yêu cầu được ủy quyền bên ngoài thông qua một trong ba loại xác thực: - Xác thực dựa trên mã thông báo - Xác thực dựa trên OAuth - Xác thực dựa trên phiên

Với bất kỳ loại xác thực nào, nhà tích hợp và nhà phát triển phải có đăng ký tài khoản người dùng với Magento. Với tài khoản người dùng, bạn có thể nhận Id mã thông báo mà bạn cần gửi cùng với yêu cầu của bạn tới Magento.

Ví dụ: tôi cho rằng bạn đã có tài khoản người dùng và thông tin tích hợp. Bây giờ bạn sẽ yêu cầu nhận mã thông báo từ Magento. Tôi chỉ cho bạn đoạn mã bằng cách sử dụng loại xác thực đầu tiên (xác thực dựa trên mã thông báo):

curl -X POST "https://localhost/magento/index.php/rest/V1/integration/admin/token" \
     -H "Content-Type:application/json" \
     -d '{"username":"user_example", "password":"123123q"}'

Nếu thành công, bạn nhận được mã thông báo như "asdf3hjklp5iuytre"

Bây giờ bạn có thể tích hợp với Magento để yêu cầu dữ liệu bằng cách gọi API của nó

curl -X GET "http://localhost/magento/index.php/rest/V1/customers/2" \
     -H "Authorization: Bearer asdf3hjklp5iuytre"

Cuối cùng, bạn có thể nhận được một danh sách khách hàng từ Magento. Tôi đang sử dụng lệnh curl chẳng hạn, nhà tích hợp và nhà phát triển có thể triển khai bằng PHP, C # hoặc ngôn ngữ khác để tạo yêu cầu dịch vụ web tới url dịch vụ.

PS: SoapUI là công cụ hữu ích để thực hiện yêu cầu dịch vụ để thử nghiệm.

Hi vọng điêu nay co ich.


Điều đó dường như không liên quan đến các đối tượng "tích hợp" tại Hệ thống> Tích hợp> Thêm Tích hợp mới. Tui bỏ lỡ điều gì vậy?
Alan Storm

Xin lỗi, tôi chỉ tập trung vào cách nhà tích hợp và nhà phát triển tích hợp với Magento. Với đối tượng Tích hợp, quản trị viên có thể tùy chỉnh API nào sẽ được phép truy cập thay vì phụ thuộc vào vai trò người dùng Magento. Bên thứ ba phải sử dụng xác thực dựa trên OAuth như một trong những cách để truy cập API Web Magento bằng mã thông báo của người tiêu dùng và mã thông báo bí mật trong đối tượng Tích hợp. Xem devdocs.magento.com/guides/v2.0/get-started/authentication/ đối
Tuấn Nguyễn

Khi tôi sử dụng lệnh curl thứ hai sau lệnh đầu tiên, tôi nhận được "{" message ":" Không có thực thể nào như vậy với% fieldName =% fieldValue "," tham số ": {" fieldName ":" customerId "," fieldValue ": 2}} "Thông điệp này có nghĩa là gì?
Rishabh Rk Rai
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.