Consumo de API em widget pública utilizando OAuth 1.0a

Olá, estou tentando consumir uma API pública do fluig em uma widget pública, sem estar logado. Eu consigo fazer as chamadas utilizando OAuth estando logado, porém sem logar sempre tenho retorno "unauthorized".

Percebi que os screenshots ficaram cortados, para visualizar 100% clique com o botão direito > abrir imagem em nova guia

Nos screenshots abaixo eu tento fazer o consumo da API de duas formas: Passando OAuth através de headers em um AJAX simples(1) e pelo body na requisição, após gerar um objeto OAuth(2). Em ambos os métodos eu utilizo "Usuário Aplicativo", gerado para um "App OAuth" - link documentação utilizada.

1: Nesse screenshot eu utilizo headers gerados pelo Postman ao preencher os campos de autenticação para fazer um AJAX simples. Na esquerda estou logado, na direita não. Ambos estão na mesma widget fluig com OAuth e CryptoJS instanciados. Screenshot_403.png

Postman (requisição com sucesso): Screenshot_419.png Screenshot_420.png

2: Já nesse screenshot eu estou utilizando uma função de SuperWidget, em questão de login é o mesmo esquema que acima, um está logado e o outro não. A diferença é que ao invés de passar headers eu utilizo OAuth Authorize no body do request.

Screenshot_416.png

Código/função do screenshot acima:

getColleagao: function() {         
        // Define o pacotinho OAuth
        var oauth = OAuth({
            consumer: {
                key: 'oauthTesteMaximo',
                secret: 'qualquercoisa'
            },
            signature_method: 'HMAC-SHA1',
            hash_function: function(base_string, key) {
                return CryptoJS.HmacSHA1(base_string, key).toString(CryptoJS.enc.Base64);
            },
            nonce_length: 6
        });

        //  Request que você faria normalmente dentro do fluig
        var request_data = {
            // Necessário passar URL completa para não dar erro de signature invalid
            url: 'http://devfluig.iv2.com.br/api/public/ecm/dataset/search',
            method: 'GET',
            data: {
                datasetId: 'colleague'
            }
        };

        // Tokens do usuário aplicativo (mó doidera, setei mas não consigo achar mais onde fica)
        var token = {
            key: '47a5226a-5820-4220-9c1b-023e083663a3',
            secret: 'b852d26a-6478-46e0-b285-4d3f65ea03f69bd4f95b-b4a3-4d2e-ad60-137791748b1c'
        };

        /* A geração dos dados para autenticação OAuth , esta sendo gerado no atributo data do ajax 
         * através da chamada do método: oauth.authorize(request_data, token)
        */

        $.ajax({
            url: request_data.url,
            crossDomain: true,
            async: true,
            type: request_data.method,        
            data: oauth.authorize(request_data, token)
        }).done(function(data) {
            console.log(data);
        });
    }

App OAuth criado no ambiente fluig: Screenshot_421.png

Provider: Screenshot_422.png

Usuário OAuth: Screenshot_413.png

Qualquer ajuda é bem vinda. Se houver outra forma de fazer/resolver eu estou disposto a aprender.

Agradeço desde já.

compartilhar
  • Bom dia Gustavo, tu conseguiu resolver esse problema? estou implementando um código parecido e me deparei com o mesmo erro, desde já agradeço.

    Gustavo Henrique Alves   1 month ago
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags oauth widget publico api ou faça a sua própria pergunta.