Solución:
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). Se considera que el usuario es anónimo si no se utilizaron tokens o 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 estar debidamente firmada con 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 se pueden realizar en nombre tanto del administrador como de la integración. Lo que difiere de la integración del usuario administrador es que un tercero puede recuperar las credenciales de la API web mediante el protocolo de enlace de OAuth.
El protocolo de enlace de OAuth permite integrarse automáticamente con un sistema de terceros multiusuario (cuando es compatible con un tercero):
- Durante la creación de la integración, complete los campos opcionales
Callback URL
yIdentity Link URL
(ambos deben ser proporcionados por un sistema de terceros) - Cuando intente activar la integración, se activará el protocolo de enlace de OAuth
- Magento enviará algunos datos a la URL de devolución de llamada mediante una 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 las credenciales de usuario autenticadas con éxito, el tercero solicitará el token de solicitud de Magento y luego lo cambiará por el 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
API
pestaña de la página de edición de integración
Nota rápida sobre la llamada a varios servicios a la vez, esta función se conoce mejor como API de agregación y no tiene nada en común con el tipo de usuario de integración.
La integración aquí es el escenario en el que los integradores y desarrolladores tienen los medios para 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 permita que el administrador configure en Nuevo Formulario de Integración (Desplácese hacia abajo en esa pantalla para seleccionar una API específica o seleccionar todo)
Debido a un problema de seguridad, The Magento solo permite solicitudes externas autorizadas 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 la identificación del token que debe enviar con su solicitud a Magento.
Por ejemplo, supongo que ya tiene una cuenta de usuario y la información de integración. Ahora vas a solicitar obtener un token de Magento. Te muestro el fragmento usando el primer tipo de autenticación (autenticación basada en token):
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, obtiene una ficha 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 implementar 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.