Apa itu Magento 2 “Integrasi API Web”


9

Per dokumentasi pengembang

API web gaya integrasi memungkinkan panggilan API web tunggal untuk menjalankan beberapa layanan sekaligus untuk integrasi yang lebih efisien. Contoh perilaku ini dapat dilihat di Katalog tempat satu panggilan API web dapat membuat produk; jika muatan Anda termasuk objek inventaris dan objek media maka kerangka kerja juga akan membuat inventaris & media produk dalam satu panggilan API.

...

Buat integrasi baru di Admin Magento. Untuk membuat integrasi, klik Sistem> Integrasi> Tambah Integrasi Baru. Pastikan untuk membatasi sumber daya mana yang dapat diakses oleh integrasi.

Tidak jelas apa sebenarnya integrasi itu. Cuplikan dokumentasi pertama menunjukkan integrasi adalah (mungkin?) Cara untuk menghubungkan beberapa panggilan API dalam satu permintaan HTTP. Namun, tidak ada contoh sintaks untuk ini. Juga, jika saya menggunakan informasi dalam snippet dokumentasi kedua saya dapat membuat objek integrasi, tetapi tidak jelas apa yang harus saya lakukan dengan ini. Selain itu, saat menggali ke dalam kode, objek integrasi tampaknya menggunakan jalur kode otentikasi yang berbeda.

Adakah yang memiliki gagasan yang jelas tentang "Integrasi API" ini, dan bagaimana cara kerjanya?

Jawaban:


7

Ada 4 jenis pengguna di Magento 2 (lihat \ Magento \ Otorisasi \ Model \ UserContextInterface ), salah satunya dapat digunakan saat membuat permintaan melalui API web:

  • Pengguna anonim (tamu). Pengguna dianggap anonim jika token atau cookie tidak digunakan untuk membuat permintaan
  • Pelanggan Token atau cookie pelanggan harus diteruskan bersama permintaan
  • Admin. Token atau cookie admin harus ada
  • Integrasi. Token akses integrasi harus diteruskan dengan gaya OAuth 2.0 ATAU permintaan harus ditandatangani dengan benar menggunakan kunci konsumen, rahasia konsumen, token akses, rahasia token akses dalam gaya OAuth 1.0a

Integrasi dapat dibuat di System > Integration > Add New Integration, dapat diberikan izin yang sama seperti pengguna Admin (pohon ACL adalah sama). Permintaan API Web dapat dibuat atas nama admin, dan integrasi. Apa yang membedakan integrasi dari pengguna admin adalah bahwa pihak ke-3 dapat mengambil kredensial web API menggunakan jabat tangan OAuth .

Jabat tangan OAuth memungkinkan untuk berintegrasi dengan sistem pihak ketiga multi-pengguna secara otomatis (ketika didukung oleh pihak ke-3):

  • Selama kreasi integrasi, isi kolom opsional Callback URLdan Identity Link URL(keduanya harus disediakan oleh sistem pihak ketiga)
  • Saat Anda mencoba mengaktifkan integrasi, jabat tangan OAuth akan dipicu
  • Beberapa data akan dikirim oleh Magento ke URL Callback menggunakan permintaan POST server-ke-server. Url Tautan Identitas (halaman login pada sistem pihak ke-3) akan dibuka di jendela sembulan dan beberapa parameter GET akan dikirim
  • Setelah berhasil mengautentikasi kredensial pengguna, pihak ketiga akan meminta Token Permintaan dari Magento dan kemudian menukarnya dengan token Akses. Ini juga akan mengaitkan instance Magento saat ini dengan akun pengguna pada catatannya sendiri. Yaitu beberapa pedagang Magento dapat memiliki akun di CRM pihak ke-3 yang sama, dan akun setiap pedagang akan dikaitkan dengan turunan Magento-nya
  • Token akses yang diterbitkan dapat digunakan untuk membuat permintaan ke Magento web API. Token ini akan dikaitkan dengan catatan Integrasi Magento dan akan memiliki akses ke sumber daya yang dipilih di APItab halaman edit Integrasi

Catatan cepat tentang memanggil beberapa layanan sekaligus, fitur ini lebih dikenal sebagai API agregasi dan tidak memiliki kesamaan dengan tipe pengguna Integrasi.


Koreksi saya jika saya salah. Tetapi tidak ada kunci konsumen dalam otentikasi Magento 2. Dokumen secara jelas menentukan bahwa M2 mengimplementasikan proses otentikasi dua kaki. Permintaan dan Akses. Seperti yang dinyatakan di sini devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef

2

Integrasi di sini adalah skenario yang integrator dan pengembang sarana untuk menggunakan layanan web yang berkomunikasi dengan sistem Magento melalui Magento API. Mereka dapat memanggil satu atau banyak layanan yang Magento mengizinkan admin mengonfigurasi dalam Formulir Integrasi Baru (Gulir ke bawah di layar itu untuk memilih API tertentu atau pilih semua)

Karena masalah keamanan, Magento hanya mengizinkan permintaan resmi eksternal melalui salah satu dari tiga jenis otentikasi: - Otentikasi berbasis Token - Otentikasi berbasis OAuth - Otentikasi berbasis sesi

Dengan semua jenis otentikasi, integrator dan pengembang harus memiliki register akun pengguna dengan Magento. Dengan akun pengguna, Anda bisa mendapatkan token Id yang harus Anda kirim dengan permintaan Anda ke Magento.

Misalnya, saya kira Anda sudah memiliki akun pengguna dan info integrasi. Sekarang Anda akan meminta untuk mendapatkan token dari Magento. Saya tunjukkan cuplikan menggunakan tipe otentikasi pertama (otentikasi berbasis 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"}'

Jika berhasil, Anda mendapatkan tanda seperti "asdf3hjklp5iuytre"

Sekarang Anda dapat berintegrasi dengan Magento untuk meminta data dengan memanggil API-nya

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

Akhirnya, Anda dapat menerima daftar pelanggan dari Magento. Saya menggunakan perintah curl misalnya, integrator dan pengembang dapat menerapkan dengan PHP, C # atau bahasa lain untuk membuat permintaan layanan web ke url layanan.

PS: SoapUI adalah alat yang berguna untuk membuat permintaan layanan untuk pengujian.

Semoga ini membantu.


Itu tampaknya tidak melibatkan objek "integrasi" di System> Integration> Add New Integration at all. Apakah saya melewatkan sesuatu?
Alan Storm

Maaf, saya hanya fokus pada cara integrator dan pengembang melakukan integrasi dengan Magento. Dengan objek Integrasi, admin dapat menyesuaikan API mana yang akan diizinkan untuk diakses alih-alih tergantung pada peran pengguna Magento. Pihak ketiga harus menggunakan otentikasi berbasis OAuth sebagai salah satu cara untuk mengakses Magento Web API dengan token konsumen dan token rahasia dalam objek Integrasi. Lihat devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen

Ketika saya menggunakan perintah ikal kedua setelah yang pertama, saya mendapat "{" message ":" Tidak ada entitas dengan% fieldName =% fieldValue "," parameter ": {" fieldName ":" customerId "," fieldValue ": 2}} "Apa artinya pesan ini?
Rishabh Rk Rai
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.