Что такое Magento 2 «Интеграция с веб-API»

9

По документации разработчика

Веб-API стиля интеграции позволяют одному вызову веб-API запускать несколько сервисов одновременно для более эффективной интеграции. Пример такого поведения можно увидеть в каталоге, где один вызов веб-API может создать продукт; если ваша полезная нагрузка включает в себя объект инвентаря и объект мультимедиа, то платформа также создаст ресурс и носитель продукта в этом одном вызове API.

...

Создайте новую интеграцию в Magento Admin. Чтобы создать интеграцию, нажмите Система> Интеграция> Добавить новую интеграцию. Обязательно ограничьте ресурсы, к которым может получить доступ интеграция.

Не совсем ясно, что такое интеграция. Первый фрагмент документации указывает, что интеграция - это (возможно?) Способ объединения нескольких вызовов API в одном HTTP-запросе. Тем не менее, нет синтаксического примера этого. Кроме того, если я использую информацию во втором фрагменте документации, я могу создать объект интеграции, но не ясно, что я должен делать с этим. Кроме того, копаясь в коде, объекты интеграции, кажется, используют другой путь кода аутентификации.

Кто-нибудь имеет четкое представление о том, что такое "интеграция API" и как они работают?

Алан Сторм
источник

Ответы:

7

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

  • Анонимные пользователи (гости). Пользователь считается анонимным, если для отправки запросов не использовались токены или файлы 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 Integration и будет иметь доступ к ресурсам, выбранным на APIвкладке страницы редактирования Integration.

Заметка о вызове нескольких сервисов одновременно, эта функция более известна как 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. С помощью объекта интеграции администратор может указать, какой API будет разрешен для доступа, а не зависит от роли пользователя Magento. Третья сторона должна использовать проверку подлинности на основе OAuth в качестве одного из способов доступа к веб-API Magento по токену потребителя и секретному токену в объекте интеграции. См. Devdocs.magento.com/guides/v2.0/get-started/authentication/…
Туан Нгуен
Когда я использую вторую команду curl после первой, я получаю "{" message ":" Нет такого объекта с% fieldName =% fieldValue "," parameters ": {" fieldName ":" customerId "," fieldValue ": 2}} «Что означает это сообщение?
Rishabh Rk Rai