Co to jest „Integracja Web API” Magento 2

9

Według dokumentacji programisty

Interfejsy API sieci Web w stylu integracji umożliwiają pojedyncze wywołanie interfejsu API sieci Web w celu uruchomienia wielu usług jednocześnie, co zapewnia bardziej wydajną integrację. Przykład takiego zachowania można zobaczyć w katalogu, w którym jedno wywołanie interfejsu API sieci Web może utworzyć produkt; jeśli twój ładunek zawiera obiekt magazynowy i obiekt multimedialny, wówczas środowisko utworzy również magazyn i nośnik produktu w tym jednym wywołaniu API.

...

Utwórz nową integrację w Magento Admin. Aby utworzyć integrację, kliknij System> Integracja> Dodaj nową integrację. Należy ograniczyć zasoby, do których integracja może uzyskać dostęp.

Nie jest do końca jasne, czym dokładnie jest integracja. Pierwszy fragment dokumentacji wskazuje, że integracja jest (może?) Sposobem na połączenie wielu wywołań API w jednym żądaniu HTTP. Jednak nie ma takiego przykładu w składni. Ponadto jeśli użyję informacji z drugiego fragmentu dokumentacji, mogę utworzyć obiekt integracji, ale nie jest jasne, co mam z tym zrobić. Ponadto podczas zagłębiania się w kod obiekty integracji wydają się używać innej ścieżki kodu uwierzytelnienia.

Czy ktoś ma jasne pojęcie, czym są te „Integracje API” i jak one działają?

Alan Storm
źródło

Odpowiedzi:

7

W Magento 2 są 4 typy użytkowników (patrz \ Magento \ Authorization \ Model \ UserContextInterface ), z każdego z nich można korzystać podczas wysyłania żądań za pośrednictwem internetowych interfejsów API:

  • Anonimowi użytkownicy (goście). Użytkownik jest uważany za anonimowego, jeśli do żądania nie użyto żadnych tokenów ani plików cookie
  • Klienci. Token klienta lub plik cookie należy przekazać wraz z żądaniem
  • Administratorzy Token administratora lub plik cookie musi być obecny
  • Integracje Token dostępu do integracji powinien być przekazywany w stylu OAuth 2.0 LUB żądanie powinno być odpowiednio podpisane przy użyciu klucza klienta, tajnego klucza klienta, tokena dostępu, tajnego klucza dostępu w stylu OAuth 1.0a

Integracja może być utworzona w System > Integration > Add New Integration, może mieć takie same uprawnienia jak każdy użytkownik Admin (drzewo ACL jest takie samo). Żądania interfejsu API sieci Web można składać zarówno w imieniu administratora, jak i integracji. Integracja z użytkownikiem administracyjnym różni się tym, że firma zewnętrzna może pobierać poświadczenia interfejsu API sieci Web za pomocą uzgadniania OAuth .

Uzgadnianie OAuth pozwala na automatyczną integrację z systemem dla wielu użytkowników (jeśli jest obsługiwany przez firmę zewnętrzną):

  • Podczas tworzenia integracji wypełnij pola opcjonalne Callback URLi Identity Link URL(oba powinny być dostarczone przez system innej firmy)
  • Gdy spróbujesz aktywować integrację, nastąpi uzgadnianie OAuth
  • Niektóre dane zostaną przesłane przez Magento na adres zwrotny za pomocą żądania POST między serwerami. Adres URL linku tożsamości (strona logowania w systemie zewnętrznym) zostanie otwarty w wyskakującym oknie i niektóre parametry GET zostaną wysłane
  • Po pomyślnym uwierzytelnieniu poświadczeń użytkownika, firma zewnętrzna poprosi Magento o token żądania, a następnie wymieni go na token dostępu. Skojarzy również bieżącą instancję Magento z kontem użytkownika we własnych rekordach. Tzn. Wielu handlowców Magento może mieć konta w tym samym CRM innej firmy, a konto każdego handlowca zostanie powiązane z jego instancją Magento
  • Wydany token dostępu może służyć do wysyłania żądań do internetowego interfejsu API Magento. Ten token zostanie powiązany z rekordem Integracji Magento i będzie miał dostęp do zasobów wybranych w APIzakładce strony edycji Integracja

Szybka uwaga na temat wywoływania wielu usług jednocześnie, ta funkcja jest lepiej znana jako interfejsy API agregacji i nie ma nic wspólnego z typem użytkownika integracji.

Alex Paliarush
źródło
Popraw mnie, jeśli się mylę. Ale w uwierzytelnianiu Magento 2 nie ma klucza klienta. Dokumenty wyraźnie określają, że M2 realizuje dwuetapowy proces uwierzytelnienia. Żądanie i dostęp. Jak stwierdzono tutaj devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef
2

Integracja tutaj jest scenariuszem, w którym integratorzy i programiści mogą korzystać z usług internetowych komunikujących się z systemem Magento za pośrednictwem Magento API. Mogą wywoływać jedną lub wiele usług, które Magento zezwala administratorowi na konfigurację w formularzu Nowa integracja (przewiń w dół na tym ekranie, aby wybrać określony interfejs API lub wybierz wszystkie)

Ze względu na problem z bezpieczeństwem Magento zezwala tylko na zewnętrzne autoryzowane żądania za pośrednictwem jednego z trzech rodzajów uwierzytelnień: - Uwierzytelnianie oparte na tokenach - Uwierzytelnianie oparte na OAuth - Uwierzytelnianie oparte na sesji

Przy każdym rodzaju uwierzytelnienia integrator i programista muszą mieć konto użytkownika zarejestrowane w Magento. Konto użytkownika pozwala uzyskać identyfikator tokena, który należy wysłać wraz z wnioskiem do Magento.

Na przykład przypuszczam, że masz już konto użytkownika i informacje o integracji. Teraz poprosisz o zdobycie tokena od Magento. Pokazuję fragment kodu przy użyciu pierwszego typu uwierzytelnienia (uwierzytelnianie oparte na tokenach):

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

Jeśli się powiedzie, otrzymasz token podobny do "asdf3hjklp5iuytre"

Teraz możesz zintegrować się z Magento w celu żądania danych, wywołując jego interfejs API

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

Wreszcie możesz otrzymać listę klientów od Magento. Używam na przykład polecenia curl, integrator i programista mogą zaimplementować PHP, C # lub inny język, aby utworzyć żądanie usługi sieci web do adresu URL usługi.

PS: SoapUI jest użytecznym narzędziem do składania zgłoszeń serwisowych w celu przetestowania.

Mam nadzieję że to pomoże.

Tuan Nguyen
źródło
Wydaje się, że nie dotyczy to obiektów „integracji” w System> Integracja> Dodaj nową integrację. Czy coś brakuje?
Alan Storm,
Przepraszam, koncentruję się na sposobie integracji integratora i programisty z Magento. Za pomocą obiektu Integration administrator może określić, który interfejs API będzie miał dostęp, a nie zależy od roli użytkownika Magento. Osoba trzecia musi używać uwierzytelniania opartego na OAuth jako jednego ze sposobów uzyskiwania dostępu do interfejsów API Magento Web przez token konsumenta i tajny token w obiekcie Integration. Zobacz devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen
Kiedy używam drugiego polecenia curl po pierwszym, dostaję komunikat „{”: „Nie ma takiej jednostki z% fieldName =% fieldValue”, „parameters”: {„fieldName”: „customerId”, „fieldValue”: 2}} „Co oznacza ta wiadomość?
Rishabh Rk Rai