Magento 2の「Web API統合」とは


9

開発者ドキュメントごと

統合スタイルのWeb APIを使用すると、単一のWeb API呼び出しで複数のサービスを一度に実行して、より効率的な統合を実現できます。この動作の例は、1つのWeb API呼び出しで製品を作成できるカタログで確認できます。ペイロードに在庫オブジェクトとメディアオブジェクトが含まれている場合、フレームワークはその1つのAPI呼び出しで製品の在庫とメディアも作成します。

...

Magento Adminで新しい統合を作成します。統合を作成するには、[システム]> [統合]> [新しい統合の追加]をクリックします。統合がアクセスできるリソースを必ず制限してください。

正確には、統合とは何かが明確ではありません。最初のドキュメントスニペットは、統合が(たぶん?)単一のHTTPリクエストで複数のAPI呼び出しをチェーンする方法であることを示しています。ただし、これの構文例はありません。また、2番目のドキュメントスニペットの情報を使用すると、統合オブジェクトを作成できますが、これを使用して何をするのかは明確ではありません。また、コードを掘り下げると、統合オブジェクトは別の認証コードパスを使用しているように見えます。

これらの「API統合」とは何か、およびそれらがどのように機能するかについて、明確な考えを持っている人はいますか?

回答:


7

Magento 2には4種類のユーザーがあり(\ Magento \ Authorization \ Model \ UserContextInterfaceを参照)、Web APIを介してリクエストを作成するときに、どのユーザーも使用できます。

  • 匿名ユーザー(ゲスト)。リクエストにトークンまたはCookieが使用されなかった場合、ユーザーは匿名であると見なされます
  • お客様。顧客のトークンまたはCookieをリクエストとともに渡す必要があります
  • 管理者。管理者トークンまたはCookieが存在する必要があります
  • 統合。統合アクセストークンはOAuth 2.0スタイルで渡されるか、リクエストはコンシューマキー、コンシューマシークレット、アクセストークン、OAuth 1.0aスタイルのアクセストークンシークレットを使用して適切に署名される必要があります

統合はで作成System > Integration > Add New Integrationでき、任意の管理者ユーザーと同じ権限を付与できます(ACLツリーは同じです)。Web APIリクエストは、adminと統合の両方に代わって行うことができます。管理者ユーザーとの統合の違いは、サードパーティがOAuthハンドシェイクを使用してWeb API資格情報を取得できることです。

OAuthハンドシェイクにより、マルチユーザーのサードパーティシステムと自動的に統合できます(サードパーティでサポートされている場合)。

  • 統合の作成時にオプションのフィールドに必要事項を記入Callback URLし、Identity Link URL(両方がサードパーティのシステムによって提供されている必要があります)
  • 統合をアクティブ化しようとすると、OAuthハンドシェイクがトリガーされます
  • 一部のデータは、サーバー間のPOSTリクエストを使用してMagentoからコールバックURLに送信されます。Identity Link Url(サードパーティシステムのログインページ)がポップアップウィンドウで開き、いくつかのGETパラメータが送信されます
  • ユーザー認証情報が正常に認証された後、サードパーティはMagentoにリクエストトークンをリクエストし、それをアクセストークンと交換します。また、現在のMagentoインスタンスを自身のレコードのユーザーアカウントに関連付けます。つまり、複数のMagento販売者が同じサードパーティCRMにアカウントを持つことができ、すべての販売者のアカウントは彼のMagentoインスタンスに関連付けられます
  • 発行されたアクセストークンは、MagentoウェブAPIへのリクエストに使用できます。このトークンはMagento統合レコードに関連付けられAPI、統合編集ページのタブで選択されたリソースにアクセスできます

一度に複数のサービスを呼び出すことに関する簡単なメモ、この機能は集約APIとしてよく知られており、統合ユーザータイプとの共通点はありません。


私が間違っていたら訂正してください。ただし、Magento 2認証にはコンシューマキーはありません。ドキュメントでは、M2が2レッグ認証プロセスを実装することを明確に規定しています。リクエストとアクセス。ここで述べたように、devdocs.magento.com / guides
v2.2

2

ここでの統合は、インテグレーターと開発者が、Magento APIを介してMagentoシステムと通信するWebサービスを使用する手段になるシナリオです。Magentoが許可する1つ以上のサービスを呼び出して、管理者が新しい統合フォームで構成できるようにします(その画面を下にスクロールして、特定のAPIまたはすべてを選択します)

セキュリティ上の問題により、Magentoは次の3つのタイプの認証のいずれかを介して外部の承認済みリクエストを許可します。-トークンベースの認証-OAuthベースの認証-セッションベースの認証

どのタイプの認証でも、インテグレーターと開発者はMagentoにユーザーアカウントを登録する必要があります。ユーザーアカウントを使用すると、リクエストと共にMagentoに送信する必要があるトークンIDを取得できます。

たとえば、ユーザーアカウントと統合情報を既に持っているとします。次に、Magentoからトークンを取得するように要求します。最初のタイプの認証(トークンベースの認証)を使用したスニペットを示します。

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

成功すると、次のようなトークンを取得します "asdf3hjklp5iuytre"

Magentoと統合して、APIを呼び出すことでデータをリクエストできるようになりました

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

最後に、Magentoから顧客のリストを受け取ることができます。たとえば、curlコマンドを使用しています。インテグレーターと開発者は、PHP、C#、または別の言語で実装して、サービスURLへのWebサービス要求を作成できます。

PS:SoapUIは、テストのためのサービスリクエストを行うための便利なツールです。

お役に立てれば。


これには、「システム」>「統合」>「新しい統合の追加」にある「統合」オブジェクトはまったく含まれていないようです。何か不足していますか?
アランストーム

申し訳ありませんが、私はインテグレーターと開発者がMagentoと統合する方法にのみ焦点を当てています。統合オブジェクトを使用すると、管理者はMagentoユーザーの役割に依存するのではなく、アクセスを許可するAPIをカスタマイズできます。サードパーティは、統合オブジェクトのコンシューマートークンとシークレットトークンによってMagento Web APIにアクセスする方法の1つとして、OAuthベースの認証を使用する必要があります。devdocs.magento.com/guides/v2.0/get-started/authentication/…を
Tuan Nguyen

最初のコマンドの後に2番目のcurlコマンドを使用すると、 "{" message ":"%fieldName =%fieldValue "、" parameters ":{" fieldName ":" customerId "、" fieldValue ":2}}のようなエンティティはありません「このメッセージの意味は?
Rishabh Rk Rai
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.