Pergunta

Como posso fazer uma solicitação de API de um aplicativo personalizado instalado em minha conta para a API de outra conta e não receber a mensagem, o erro não é um URI proxyable.

Resposta

O comportamento padrão do client.request é enviar a solicitação pela camada de proxy do Zendesk, um gateway que bloqueia solicitações HTTP de uma conta para outra, o que resulta em que o 403 não é uma resposta URI proxyável.

Para fazer uma solicitação client.request para a API de outra instância do Zendesk a partir de um aplicativo personalizado em sua conta, passe cors: true no objeto de opções de solicitação. Isso permite que a solicitação ignore a camada de proxy do Zendesk.

// make a request from a custom app in one Zendesk to the API of another Zendesk
 
 function newRequest(){
  var options = {
        url: 'https://subdomain.zendesk.com/api/v2/....',
        headers: { "Authorization": "Bearer OAUTH_TOKEN"},
        type: 'POST',
        data: JSON.stringify({my:"json", values:"go here"}), 
        contentType: "application/json",
        cors: true 
      } 
      client.request(options).then(
        function(response) {
          console.log(response);
        });
  }

Uma observação sobre solicitações do lado do cliente versus do lado do servidor

Cada ponto de extremidade da API do Zendesk implementa o Compartilhamento de recursos de origem cruzada (CORS). Se a solicitação do aplicativo for originada do lado do cliente, as respostas do CORS falharão, a menos que use OAuth. Se você precisar apenas do método GET, escope o token OAuth para acesso somente leitura a recursos específicos e implemente-o do lado do cliente.

Se a solicitação do aplicativo para a outra API do Zendesk é escrever dados com o método PUT ou POST, nenhuma das opções é segura, pois expõe o token no tráfego de rede. Na maioria dos fluxos de trabalho, você pode usar as configurações de segurança para evitar problemas de segurança com o token.

As configurações de segurança não funcionam para esse fluxo de trabalho porque exigem que a solicitação passe pela camada de proxy do Zendesk. Se você precisa que o aplicativo escreva dados, considere soluções do lado do servidor em que a solicitação para a API do outro Zendesk é enviada de volta para o aplicativo, gerenciada do lado do servidor.

Isenção de responsabilidade: Este artigo destina-se apenas a fins informativos. O Zendesk não oferece suporte nem garantia ao código. Publique problemas encontrados nos comentários ou pesquise por uma solução online.

Aviso sobre a tradução: este artigo foi traduzido por um software de tradução automática para oferecer a você uma compreensão básica do conteúdo. Medidas razoáveis foram tomadas para fornecer uma tradução precisa, no entanto, a Zendesk não garante a precisão da tradução.

Em caso de dúvidas relacionadas à precisão das informações contidas no artigo traduzido, consulte a versão oficial do artigo em inglês.

Powered by Zendesk