Qu'est-ce qu'une «intégration API Web» de Magento 2

9

Selon la documentation du développeur

Les API Web de style d'intégration permettent à un seul appel d'API Web d'exécuter plusieurs services à la fois pour une intégration plus efficace. Un exemple de ce comportement peut être vu dans le catalogue où un appel d'API Web peut créer un produit; si votre charge utile comprend l'objet d'inventaire et l'objet multimédia, le framework créera également l'inventaire et le support du produit dans cet appel API.

...

Créez une nouvelle intégration sur Magento Admin. Pour créer une intégration, cliquez sur Système> Intégration> Ajouter une nouvelle intégration. Veillez à limiter les ressources auxquelles l'intégration peut accéder.

Ce n'est pas tout à fait clair ce qu'est exactement une intégration. Le premier extrait de documentation indique qu'une intégration est (peut-être?) Un moyen de chaîner plusieurs appels d'API dans une seule requête HTTP. Cependant, il n'y a pas d'exemple de syntaxe de cela. De plus, si j'utilise les informations du deuxième extrait de documentation, je peux créer un objet d'intégration, mais ce que je suis censé faire avec cela n'est pas clair. En outre, en creusant dans le code, les objets d'intégration semblent utiliser un chemin de code d'authentification différent.

Quelqu'un a-t-il une idée claire de ce que sont ces «intégrations API» et comment elles fonctionnent?

Alan Storm
la source

Réponses:

7

Il existe 4 types d'utilisateurs dans Magento 2 (voir \ Magento \ Authorization \ Model \ UserContextInterface ), chacun d'entre eux peut être utilisé lors de la demande via des API Web:

  • Utilisateurs anonymes (invités). L'utilisateur est considéré comme anonyme si aucun jeton ou cookie n'a été utilisé pour effectuer des demandes
  • Les clients. Le jeton ou le cookie client doit être transmis avec la demande
  • Administrateurs. Le jeton d'administrateur ou le cookie doit être présent
  • Intégrations. Le jeton d'accès à l'intégration doit être transmis dans le style OAuth 2.0 OU la demande doit être correctement signée à l'aide de la clé du consommateur, du secret du consommateur, du jeton d'accès, du secret du jeton d'accès dans le style OAuth 1.0a

L'intégration peut être créée à System > Integration > Add New Integration, elle peut recevoir les mêmes autorisations que n'importe quel utilisateur Admin (l'arborescence ACL est la même). Les demandes d'API Web peuvent être effectuées au nom de l'administrateur et de l'intégration. Ce qui diffère de l'intégration de l'utilisateur administrateur, c'est que des tiers peuvent récupérer les informations d'identification de l'API Web à l'aide de la négociation OAuth .

La prise de contact OAuth permet de s'intégrer automatiquement avec un système tiers multi-utilisateurs (lorsque pris en charge par un tiers):

  • Lors de la création de l'intégration, remplissez les champs facultatifs Callback URLet Identity Link URL(les deux doivent être fournis par un système tiers)
  • Lorsque vous essayez d'activer l'intégration, la négociation OAuth est déclenchée
  • Certaines données seront envoyées par Magento à l'URL de rappel à l'aide d'une requête POST de serveur à serveur. L'URL Identity Link (page de connexion sur un système tiers) sera ouverte dans une fenêtre contextuelle et certains paramètres GET seront envoyés
  • Après avoir authentifié avec succès les informations d'identification de l'utilisateur, un tiers demandera un jeton de demande à Magento, puis l'échangera contre un jeton d'accès. Il associera également l'instance Magento actuelle au compte utilisateur dans ses propres enregistrements. C'est-à-dire que plusieurs marchands Magento peuvent avoir des comptes dans le même CRM tiers, et le compte de chaque marchand sera lié à son instance Magento
  • Le jeton d'accès émis peut être utilisé pour effectuer des demandes auprès de l'API Web Magento. Ce jeton sera associé à l'enregistrement d'intégration Magento et aura accès aux ressources sélectionnées dans l' APIonglet de la page d'édition de l'intégration

Remarque rapide sur l'appel de plusieurs services à la fois, cette fonctionnalité est mieux connue sous le nom d'API d'agrégation et n'a rien en commun avec le type d'utilisateur d'intégration.

Alex Paliarush
la source
Corrige moi si je me trompe. Mais il n'y a pas de clé client dans l'authentification Magento 2. Les documents précisent clairement que M2 met en œuvre un processus d'authentification à deux étapes. Demande et accès. Comme indiqué ici devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef
2

L'intégration ici est le scénario selon lequel les intégrateurs et les développeurs ont les moyens d'utiliser des services Web qui communiquent avec le système Magento via l'API Magento. Ils peuvent appeler un ou plusieurs services que Magento permet à l'administrateur de configurer dans le nouveau formulaire d'intégration (faites défiler vers le bas dans cet écran pour sélectionner une API spécifique ou tout sélectionner)

En raison d'un problème de sécurité, The Magento autorise uniquement les demandes externes autorisées via l'un des trois types d'authentification: - Authentification basée sur les jetons - Authentification basée sur OAuth - Authentification basée sur la session

Avec tout type d'authentification, l'intégrateur et le développeur doivent avoir un compte utilisateur enregistré auprès de Magento. Avec le compte utilisateur, vous pouvez obtenir un identifiant de jeton que vous devez envoyer avec votre demande au Magento.

Par exemple, je suppose que vous disposez déjà d'un compte utilisateur et d'informations sur l'intégration. Vous allez maintenant demander à obtenir un jeton de Magento. Je vous montre l'extrait en utilisant le premier type d'authentification (authentification basée sur les jetons):

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

En cas de succès, vous obtenez un jeton comme "asdf3hjklp5iuytre"

Maintenant, vous pouvez intégrer avec Magento pour demander des données en appelant son API

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

Enfin, vous pouvez recevoir une liste de clients du Magento. J'utilise la commande curl par exemple, l'intégrateur et le développeur peuvent implémenter par PHP, C # ou un autre langage pour créer une demande de service Web vers une URL de service.

PS: SoapUI est un outil utile pour faire une demande de service pour les tests.

J'espère que cela t'aides.

Tuan Nguyen
la source
Cela ne semble pas impliquer du tout les objets "intégrations" dans Système> Intégration> Ajouter une nouvelle intégration. Suis-je en train de manquer quelque chose?
Alan Storm
Désolé, je me concentre uniquement sur la façon dont l'intégrateur et le développeur s'intègrent avec Magento. Avec l'objet d'intégration, l'administrateur peut personnaliser l'API qui sera autorisée à accéder plutôt que dépend du rôle d'utilisateur Magento. Le tiers doit utiliser l'authentification basée sur OAuth comme l'un des moyens d'accéder aux API Web Magento par jeton consommateur et jeton secret dans l'objet d'intégration. Voir devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen
Lorsque j'utilise la deuxième commande curl après la première, je reçois "{" message ":" Aucune entité de ce type avec% fieldName =% fieldValue "," parameters ": {" fieldName ":" customerId "," fieldValue ": 2}} "Que signifie ce message?
Rishabh Rk Rai