O que é uma “Integração de API da Web” do Magento 2


9

De acordo com a documentação do desenvolvedor

As APIs da Web do estilo de integração permitem que uma única chamada da API da Web execute vários serviços ao mesmo tempo para uma integração mais eficiente. Um exemplo desse comportamento pode ser visto no catálogo em que uma chamada de API da web pode criar um produto; se sua carga útil incluir o objeto de inventário e o objeto de mídia, a estrutura também criará o inventário e a mídia do produto nessa chamada de API.

...

Crie uma nova integração no Magento Admin. Para criar uma integração, clique em Sistema> Integração> Incluir Nova Integração. Certifique-se de restringir quais recursos a integração pode acessar.

Não está tão claro o que é exatamente uma integração. O primeiro trecho de documentação indica que uma integração é (talvez?) Uma maneira de encadear várias chamadas de API em uma única solicitação HTTP. No entanto, não há exemplo de sintaxe disso. Além disso, se eu usar as informações no segundo trecho de documentação, posso criar um objeto de integração, mas não está claro o que devo fazer com isso. Além disso, ao pesquisar no código, os objetos de integração parecem usar um caminho de código de autenticação diferente.

Alguém tem uma idéia clara do que são essas "integrações de API" e como elas funcionam?

Respostas:


7

Existem 4 tipos de usuários no Magento 2 (consulte \ Magento \ Authorization \ Model \ UserContextInterface ), qualquer um deles pode ser usado ao fazer solicitações via APIs da Web:

  • Usuários anônimos (convidados). O usuário é considerado anônimo se nenhum tokens ou cookies foram usados ​​para fazer solicitações
  • Clientes. O token ou cookie do cliente deve ser passado junto com a solicitação
  • Admins. O token ou o cookie do administrador deve estar presente
  • Integrações. O token de acesso à integração deve ser passado no estilo OAuth 2.0 OU a solicitação deve ser assinada corretamente usando chave do consumidor, segredo do consumidor, token de acesso, segredo do token de acesso no estilo OAuth 1.0a

A integração pode ser criada em System > Integration > Add New Integration, pode ser concedida as mesmas permissões que qualquer usuário Admin (a árvore da ACL é a mesma). As solicitações de API da Web podem ser feitas em nome de ambos, administrador e integração. O que difere a integração do usuário administrador é que terceiros podem recuperar credenciais da API da web usando o handshake do OAuth .

O handshake do OAuth permite a integração automática com o sistema de terceiros multiusuário (quando suportado por terceiros):

  • Durante a criação da integração, preencha os campos opcionais Callback URLe Identity Link URL(ambos devem ser fornecidos pelo sistema de terceiros)
  • Quando você tenta ativar a integração, o handshake do OAuth é acionado
  • Alguns dados serão enviados pelo Magento ao URL de retorno de chamada usando a solicitação POST de servidor para servidor. O URL do link de identidade (página de login no sistema de terceiros) será aberto na janela pop-up e alguns parâmetros GET serão enviados
  • Após a autenticação bem-sucedida das credenciais do usuário, terceiros solicitarão o Token de Solicitação do Magento e os trocarão pelo token de Acesso. Também associará a instância atual do Magento à conta do usuário em seus próprios registros. Ou seja, vários comerciantes Magento podem ter contas no mesmo CRM de terceiros e a conta de todos os comerciantes será vinculada à sua instância Magento
  • O token de acesso emitido pode ser usado para fazer solicitações à API da web Magento. Esse token será associado ao registro Magento Integration e terá acesso aos recursos selecionados na APIguia da página de edição Integration

Nota rápida sobre como chamar vários serviços de uma só vez, esse recurso é mais conhecido como APIs de agregação e não tem nada em comum com o tipo de usuário Integration.


Corrija-me se eu estiver errado. Mas não há chave do consumidor na autenticação Magento 2. Os Documentos especificam claramente que o M2 implementa um processo de autenticação de duas pernas. Solicitação e acesso. Como indicado aqui devdocs.magento.com/guides/v2.2/get-started/authentication/…
vitoriodachef

2

A integração aqui é o cenário em que integradores e desenvolvedores os meios para usar serviços da web que se comunicam com o sistema Magento via Magento API. Eles podem chamar um ou vários serviços que o Magento permite que o administrador configure no Novo Formulário de Integração (role para baixo nessa tela para selecionar API específica ou selecionar todos)

Devido a um problema de segurança, o Magento apenas permite solicitações externas autorizadas por meio de um dos três tipos de autenticação: - Autenticação baseada em token - Autenticação baseada em OAuth - Autenticação baseada em sessão

Com qualquer tipo de autenticação, o integrador e o desenvolvedor devem ter uma conta de usuário registrada no Magento. Com a conta de usuário, você pode obter o ID do token que precisa enviar com sua solicitação ao Magento.

Por exemplo, suponho que você já tenha informações de conta e integração de usuário. Agora você vai solicitar o token do Magento. Eu mostro o snippet usando o primeiro tipo de autenticação (autenticação baseada em 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 for bem-sucedido, você recebe um token como "asdf3hjklp5iuytre"

Agora você pode integrar-se ao Magento para solicitar dados chamando sua API

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

Finalmente, você pode receber uma lista de clientes do Magento. Estou usando o comando curl, por exemplo, o integrador e o desenvolvedor podem implementar por PHP, C # ou outro idioma para criar uma solicitação de serviço da Web para um URL de serviço.

PS: SoapUI é uma ferramenta útil para fazer solicitações de serviços para testes.

Espero que isto ajude.


Isso não parece envolver os objetos "integrações" em Sistema> Integração> Adicionar nova integração. Estou esquecendo de algo?
Alan Storm1

Desculpe, apenas me concentro na maneira como o integrador e o desenvolvedor se integram ao Magento. Com o objeto Integration, o administrador pode personalizar qual API terá permissão para acessar, em vez de depender da função de usuário do Magento. O terceiro deve usar a autenticação baseada em OAuth como uma das maneiras de acessar as APIs da Magento Web por token do consumidor e token secreto no objeto Integration. Veja devdocs.magento.com/guides/v2.0/get-started/authentication/…
Tuan Nguyen

Quando uso o segundo comando curl após o primeiro, recebi "{" message ":" Nenhuma entidade com% fieldName =% fieldValue "," parameters ": {" fieldName ":" customerId "," fieldValue ": 2}} "O que esta mensagem significa?
Rishabh Rk Rai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.