Що таке Magento 2 "Інтеграція веб-API"


9

Відповідно до документації розробника

Веб-API стилю інтеграції дозволяють за допомогою одного виклику веб-API запускати декілька сервісів одночасно для більш ефективної інтеграції. Приклад такої поведінки можна побачити в Каталозі, де один виклик веб-API може створити продукт; якщо ваша корисна навантаження включає об'єкт інвентаризації та медіа-об’єкт, тоді рамка також створить інвентар та носії продукту в одному виклику API.

...

Створіть нову інтеграцію на Magento Admin. Щоб створити інтеграцію, натисніть Система> Інтеграція> Додати нову інтеграцію. Обов’язково обмежте, до яких ресурсів може отримати доступ інтеграція.

Не все зрозуміло, що саме таке інтеграція. Перший фрагмент документації вказує, що інтеграція є (можливо?) Способом ланцюга кількох викликів API в одному запиті HTTP. Однак приклад цього не існує. Крім того, якщо я використовую інформацію у другому фрагменті документації, я можу створити об'єкт інтеграції, але незрозуміло, що я маю робити з цим. Також, копаючись у коді, об'єкти інтеграції, як видається, використовують інший шлях коду аутентифікації.

Хтось має чітке уявлення про те, що таке "Інтеграції API" та як вони працюють?

Відповіді:


7

У Magento 2 є 4 типи користувачів (див. \ Magento \ Authorization \ Model \ UserContextInterface ), будь-який з них може бути використаний під час надсилання запитів через веб-API:

  • Анонімні користувачі (гості). Користувач вважається анонімним, якщо для подання запитів не використовувалися символи та файли cookie
  • Клієнти. Маркер або cookie клієнта повинні бути передані разом із запитом
  • Адміністратори. Маркер адміністратора або файл cookie повинні бути присутніми
  • Інтеграції. Маркер доступу до інтеграції повинен бути переданий у стилі OAuth 2.0 АБО запит має бути належним чином підписаний за допомогою споживчого ключа, секрету споживача, маркера доступу, секрету маркера доступу у стилі OAuth 1.0a

Інтеграцію можна створити за адресою System > Integration > Add New Integration, їй можна надати такі ж дозволи, як і будь-якому користувачеві адміністратора (дерево ACL - те саме). Запити веб-API можна робити від імені адміністратора та інтеграції. Відмінність інтеграції від користувача адміністратора полягає в тому, що третя сторона може отримати облікові дані веб-API за допомогою рукостискання OAuth .

Рукостискання OAuth дозволяє автоматично інтегруватися до багатокористувацької сторонньої системи (коли підтримується третьою стороною):

  • Під час створення інтеграції заповнюйте необов'язкові поля Callback URLта Identity Link URL(обидва повинні надаватися стороною системою)
  • При спробі активувати інтеграцію спрацьовує рукостискання OAuth
  • Деякі дані буде надіслано Magento до URL-адреси зворотного виклику за допомогою POST-запиту від сервера до сервера. URL-адреса посилання посвідчення особи (сторінка входу в сторонній системі) відкриється у спливаючому вікні, а деякі параметри GET будуть надіслані
  • Після успішної автентифікації облікових даних користувачів третя сторона запитає запит на маркер Magento і потім обміняє його на маркер доступу. Він також асоціює поточний екземпляр Magento з обліковим записом користувача на власних записах. Тобто кілька продавців Magento можуть мати облікові записи в одній сторонній CRM, і кожен рахунок продавця буде прив’язаний до його примірника Magento
  • Виданий маркер доступу може використовуватися для подання запитів до веб-API Magento. Цей маркер буде асоційований із записом інтеграції Magento та матиме доступ до ресурсів, вибраних на APIвкладці сторінки редагування інтеграції

Коротка примітка про виклик декількох служб одночасно, ця функція більш відома як API агрегації та не має нічого спільного з типом користувача Integration.


Виправте мене, якщо я помиляюся. Але в аутентифікації Magento 2 немає споживчого ключа. Документи чітко вказують, що M2 реалізує двосторонній процес аутентифікації. Запит та доступ. Як зазначено тут devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef

2

Інтеграція тут - це сценарій, згідно з яким інтегратори та розробники мають використовувати веб-сервіси, що спілкуються із системою Magento через API Magento. Вони можуть зателефонувати до однієї або багатьох служб, яким Magento дозволяє налаштувати адміністратора у формі нової інтеграції (прокрутіть вниз на цьому екрані, щоб вибрати конкретний API або вибрати всі)

Через проблеми із безпекою Magento просто дозволяє зовнішні авторизовані запити за допомогою аутентифікації одного з трьох типів: - аутентифікація на основі токена - автентифікація на основі OAuth - аутентифікація на основі сесії

З будь-яким типом аутентифікації інтегратор та розробник повинні мати реєстрацію облікових записів користувачів у Magento. За допомогою облікового запису користувача ви можете отримати ідентифікатор токена, який потрібно надіслати разом із запитом Magento.

Наприклад, я думаю, у вас уже є інформація про обліковий запис користувача та інформацію про інтеграцію. Тепер ви збираєтесь просити отримати маркер від Magento. Я показую вам фрагмент, використовуючи перший тип аутентифікації (аутентифікація на основі токена):

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

Якщо ви успішно отримаєте, ви отримаєте маркер на кшталт "asdf3hjklp5iuytre"

Тепер ви можете інтегруватися з Magento для запиту даних, зателефонувавши в його API

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

Нарешті, ви можете отримати список клієнтів від Magento. Наприклад, я використовую команду curl, інтегратор та розробник можуть реалізувати PHP, C # або іншою мовою для створення запиту веб-служби до URL-адреси служби.

PS: SoapUI є корисним інструментом для надання запиту на обслуговування для тестування.

Сподіваюсь, це допомагає.


Це, мабуть, не передбачає об'єктів "інтеграції" в системі> Інтеграція> Додавання нової інтеграції взагалі. Я щось пропускаю?
Алан Шторм

Вибачте, я просто зосередився на тому, як інтегратор та розробник інтегруються з Magento. З об’єктом Integration адміністратор може настроювати, до якого API буде дозволено отримати доступ, а не залежить від ролі користувача Magento. Третя сторона повинна використовувати аутентифікацію на основі OAuth як один із способів доступу до веб-API Magento за допомогою споживчого маркера та секретного маркера в об'єкті Integration. Дивіться devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen

Коли я використовую другу команду curl після першої, я отримав "{" message ":" Немає такої сутності з% fieldName =% fieldValue "," parametres ": {" fieldName ":" customerId "," fieldValue ": 2}} "Що означає це повідомлення?
Rishabh Rk Rai
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.