Che cos'è Magento 2 "Integrazione API Web"


9

Secondo la documentazione per gli sviluppatori

Le API Web di stile di integrazione consentono a una singola chiamata API Web di eseguire più servizi contemporaneamente per un'integrazione più efficiente. Un esempio di questo comportamento può essere visto nel Catalogo in cui una chiamata API Web può creare un prodotto; se il payload include l'oggetto inventario e l'oggetto multimediale, il framework creerà anche l'inventario e il supporto del prodotto in quella chiamata API.

...

Crea una nuova integrazione su Magento Admin. Per creare un'integrazione, fare clic su Sistema> Integrazione> Aggiungi nuova integrazione. Assicurati di limitare a quali risorse può accedere l'integrazione.

Non è poi così chiaro cosa sia esattamente un'integrazione. Il primo frammento di documentazione indica che l'integrazione è (forse?) Un modo per concatenare più chiamate API in una singola richiesta HTTP. Tuttavia, non esiste un esempio di sintassi di questo. Inoltre, se utilizzo le informazioni nel secondo frammento di documentazione, posso creare un oggetto di integrazione, ma non è chiaro cosa dovrei fare con questo. Inoltre, scavando nel codice, gli oggetti di integrazione sembrano utilizzare un percorso del codice di autenticazione diverso.

Qualcuno ha una chiara idea di cosa siano queste "Integrazioni API" e come funzionano?

Risposte:


7

Esistono 4 tipi di utenti in Magento 2 (vedi \ Magento \ Authorization \ Model \ UserContextInterface ), ognuno di essi può essere utilizzato durante le richieste tramite API Web:

  • Utenti anonimi (ospiti). L'utente è considerato anonimo se non sono stati utilizzati token o cookie per effettuare richieste
  • I clienti. Il token o il cookie del cliente devono essere trasmessi insieme alla richiesta
  • Amministratori. Token o cookie di amministrazione devono essere presenti
  • Integrazioni. Il token di accesso all'integrazione deve essere passato in stile OAuth 2.0 O la richiesta deve essere correttamente firmata utilizzando la chiave del consumatore, il segreto del consumatore, il token di accesso, il segreto del token di accesso in stile OAuth 1.0a

L'integrazione può essere creata su System > Integration > Add New Integration, può avere le stesse autorizzazioni di qualsiasi utente Admin (l'albero ACL è lo stesso). Le richieste dell'API Web possono essere fatte sia per conto dell'amministratore che dell'integrazione. Ciò che differisce dall'integrazione dell'utente amministratore è che terze parti possono recuperare le credenziali dell'API Web usando l' handshake OAuth .

L'handshake di OAuth consente di integrarsi automaticamente con il sistema di terze parti multiutente (quando supportato da terze parti):

  • Durante la creazione dell'integrazione compila i campi opzionali Callback URLe Identity Link URL(entrambi dovrebbero essere forniti da un sistema di terze parti)
  • Quando si tenta di attivare l'integrazione, viene attivata la stretta di mano di OAuth
  • Alcuni dati verranno inviati da Magento all'URL di richiamata utilizzando la richiesta POST da server a server. L'URL di Identity Link (pagina di accesso su un sistema di terze parti) verrà aperto nella finestra popup e verranno inviati alcuni parametri GET
  • Dopo aver autenticato correttamente le credenziali dell'utente, terze parti richiederanno il token richiesta da Magento e quindi lo scambieranno con il token di accesso. Assocerà inoltre l'istanza attuale di Magento all'account utente nei propri record. Vale a dire più commercianti Magento possono avere account nello stesso CRM di terze parti e ogni account commerciante sarà legato alla sua istanza Magento
  • Il token di accesso emesso può essere utilizzato per inviare richieste all'API Web Magento. Questo token sarà associato al record di integrazione di Magento e avrà accesso alle risorse selezionate nella APIscheda della pagina di modifica dell'integrazione

Nota rapida su come chiamare più servizi contemporaneamente, questa funzione è meglio conosciuta come API di aggregazione e non ha nulla in comune con il tipo di utente Integration.


Correggimi se sbaglio. Ma non esiste una chiave utente nell'autenticazione Magento 2. I documenti specificano chiaramente che M2 implementa un processo di autenticazione a due zampe. Richiesta e accesso. Come indicato qui devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef

2

L'integrazione qui è lo scenario in cui integratori e sviluppatori sono i mezzi per utilizzare i servizi Web che comunicano con il sistema Magento tramite l'API Magento. Possono chiamare uno o più servizi che Magento consente all'amministratore di configurare in Nuovo modulo di integrazione (scorrere verso il basso in quella schermata per selezionare API specifiche o selezionare tutto)

A causa di un problema di sicurezza, Magento consente solo richieste autorizzate esterne tramite uno dei tre tipi di autenticazioni: - Autenticazione basata su token - Autenticazione basata su OAuth - Autenticazione basata su sessione

Con qualsiasi tipo di autenticazione, l'integratore e lo sviluppatore devono disporre di un registro account utente con Magento. Con l'account utente, puoi ottenere l'ID token che devi inviare con la tua richiesta a Magento.

Ad esempio, suppongo che tu abbia già informazioni sull'account utente e sull'integrazione. Ora chiederai di ottenere il token dal Magento. Ti mostro lo snippet usando il primo tipo di autenticazione (autenticazione basata su 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"}'

Se ha successo, ottieni un token come "asdf3hjklp5iuytre"

Ora puoi integrarti con Magento per richiedere dati chiamando la sua API

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

Infine, potresti ricevere un elenco di clienti dal Magento. Ad esempio, sto usando il comando curl, l'integratore e lo sviluppatore possono implementare PHP, C # o un'altra lingua per creare una richiesta di servizio Web a un URL di servizio.

PS: SoapUI è uno strumento utile per effettuare richieste di servizio per i test.

Spero che sia di aiuto.


Ciò non sembra coinvolgere gli oggetti "integrazioni" in Sistema> Integrazione> Aggiungi nuova integrazione. Mi sto perdendo qualcosa?
Alan Storm

Mi dispiace, mi concentro solo sul modo in cui integratore e sviluppatore si integrano con Magento. Con l'oggetto Integration, l'amministratore può personalizzare a quale API sarà consentito l'accesso piuttosto che dipende dal ruolo utente di Magento. La terza parte deve utilizzare l'autenticazione basata su OAuth come uno dei modi per accedere alle API Web Magento tramite token consumer e token segreto nell'oggetto Integration. Vedi devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen

Quando utilizzo il secondo comando di arricciatura dopo il primo ho ricevuto "{" message ":" Nessuna entità del genere con% fieldName =% fieldValue "," parametri ": {" fieldName ":" customerId "," fieldValue ": 2}} "Cosa significa questo messaggio?
Rishabh Rk Rai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.