¿Qué es una "integración de API web" de Magento 2?

9

Por la documentación del desarrollador

Las API web de estilo de integración permiten que una sola llamada API web ejecute múltiples servicios a la vez para una integración más eficiente. Un ejemplo de este comportamiento se puede ver en el Catálogo donde una llamada a la API web puede crear un producto; si su carga útil incluye el objeto de inventario y el objeto de medios, el marco también creará el inventario y los medios del producto en esa única llamada API.

...

Cree una nueva integración en Magento Admin. Para crear una integración, haga clic en Sistema> Integración> Agregar nueva integración. Asegúrese de restringir a qué recursos puede acceder la integración.

No está del todo claro qué es exactamente una integración. El primer fragmento de documentación indica que una integración es (¿quizás?) Una forma de encadenar múltiples llamadas API en una sola solicitud HTTP. Sin embargo, no hay un ejemplo de sintaxis de esto. Además, si uso la información en el segundo fragmento de documentación, puedo crear un objeto de integración, pero no está claro qué se supone que debo hacer con esto. Además, al profundizar en el código, los objetos de integración parecen usar una ruta de código de autenticación diferente.

¿Alguien tiene una idea clara de cuáles son estas "integraciones de API" y cómo funcionan?

Alan Storm
fuente

Respuestas:

7

Hay 4 tipos de usuarios en Magento 2 (consulte \ Magento \ Authorization \ Model \ UserContextInterface ), cualquiera de ellos se puede utilizar al realizar solicitudes a través de API web:

  • Usuarios anónimos (invitados). El usuario se considera anónimo si no se utilizaron tokens ni cookies para realizar solicitudes
  • Clientes. El token o la cookie del cliente deben pasarse junto con la solicitud
  • Administradores El token de administrador o la cookie deben estar presentes
  • Integraciones. El token de acceso de integración debe pasarse en el estilo OAuth 2.0 O la solicitud debe firmarse correctamente utilizando la clave del consumidor, el secreto del consumidor, el token de acceso, el secreto del token de acceso en el estilo OAuth 1.0a

La integración se puede crear en System > Integration > Add New Integration , se le pueden otorgar los mismos permisos que cualquier usuario administrador (el árbol de ACL es el mismo). Las solicitudes de API web pueden hacerse en nombre de ambos, administrador e integración. Lo que diferencia a la integración del usuario administrador es que un tercero puede recuperar las credenciales de la API web mediante el protocolo de enlace OAuth .

El protocolo de enlace OAuth permite integrarse automáticamente con un sistema de terceros de múltiples usuarios (cuando sea compatible con terceros):

  • Durante la creación de integración, complete los campos opcionales Callback URL y Identity Link URL(ambos deben ser proporcionados por un sistema de terceros)
  • Cuando intente activar la integración, se activará el protocolo de enlace OAuth
  • Magento enviará algunos datos a la URL de devolución de llamada mediante la solicitud POST de servidor a servidor. Identity Link Url (página de inicio de sesión en un sistema de terceros) se abrirá en una ventana emergente y se enviarán algunos parámetros GET
  • Después de autenticar con éxito las credenciales de usuario, un tercero solicitará un token de solicitud a Magento y luego lo cambiará por token de acceso. También asociará la instancia actual de Magento con la cuenta de usuario en sus propios registros. Es decir, varios comerciantes de Magento pueden tener cuentas en el mismo CRM de terceros, y la cuenta de cada comerciante estará vinculada a su instancia de Magento
  • El token de acceso emitido se puede utilizar para realizar solicitudes a la API web de Magento. Este token se asociará con el registro de integración de Magento y tendrá acceso a los recursos seleccionados en la APIpestaña de la página de edición de integración

Nota rápida sobre cómo llamar a múltiples servicios a la vez, esta característica se conoce mejor como API de agregación y no tiene nada en común con el tipo de usuario de integración.

Alex Paliarush
fuente
Corrígeme si estoy equivocado. Pero no hay clave de consumidor en la autenticación de Magento 2. Los documentos especifican claramente que M2 implementa un proceso de autenticación de dos patas. Solicitud y acceso. Como se indica aquí devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef
2

La integración aquí es el escenario en el que los integradores y desarrolladores pueden utilizar los servicios web que se comunican con el sistema Magento a través de la API de Magento. Pueden llamar a uno o varios servicios que Magento permite que el administrador configure en Nuevo formulario de integración (Desplácese hacia abajo en esa pantalla para seleccionar API específica o seleccionar todo)

Debido a un problema de seguridad, The Magento solo permite solicitudes autorizadas externas a través de uno de los tres tipos de autenticación: - Autenticación basada en token - Autenticación basada en OAuth - Autenticación basada en sesión

Con cualquier tipo de autenticación, el integrador y el desarrollador deben tener una cuenta de usuario registrada en Magento. Con la cuenta de usuario, puede obtener el identificador de token que debe enviar con su solicitud a Magento.

Por ejemplo, supongo que ya tiene cuenta de usuario e información de integración. Ahora va a solicitar obtener un token de Magento. Le muestro el fragmento utilizando el primer tipo de autenticación (autenticación basada en tokens):

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

Si tiene éxito, obtendrá un token como "asdf3hjklp5iuytre"

Ahora puede integrarse con Magento para solicitar datos llamando a su API

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

Finalmente, puede recibir una lista de clientes de Magento. Estoy usando el comando curl, por ejemplo, el integrador y el desarrollador pueden implementarlo mediante PHP, C # u otro lenguaje para crear una solicitud de servicio web a una url de servicio.

PD: SoapUI es una herramienta útil para realizar solicitudes de servicio para pruebas.

Espero que esto ayude.

Tuan Nguyen
fuente
Eso no parece involucrar los objetos de "integraciones" en Sistema> Integración> Agregar nueva integración. ¿Me estoy perdiendo de algo?
Alan Storm
Lo siento, solo me concentro en la forma en que el integrador y el desarrollador se integran con Magento. Con el objeto Integration, el administrador puede personalizar a qué API se le permitirá acceder en lugar de depender de la función de usuario de Magento. El tercero debe usar la autenticación basada en OAuth como una de las formas de acceder a las API web de Magento por token de consumidor y token secreto en el objeto de integración. Ver devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen
Cuando uso el segundo comando curl después del primero, obtengo "{" mensaje ":" No existe dicha entidad con% fieldName =% fieldValue "," parámetros ": {" fieldName ":" customerId "," fieldValue ": 2}} "¿Qué significa este mensaje?
Rishabh Rk Rai