Estou com problemas em pegar o retorno em formato JSON de requisições AJAX ou WCMAPI.Read da API pública do fluig.
Mesmo depois de configurar Oauth Provider e o Oauth App (tanto para requisição POST quanto GET) e colocar o usuário Oauth como administrador, não consigo ver o retorno da requisição ao executar o código em um WCM público sem autenticação.
Por algum motivo o retorno vem criptografado. OBS: Com o usuário autenticado ele executa uma vez a chamada e em todas as outras requisições ele criptografa o retorno.
Código de utilizado (exemplo):
var consumerPublic = "post-app"
var consumerSecret = "post-secret-app";
var tokenPublic = "XXXXXXXXXXXXXXXXXXXXXXXX";
var tokenSecret = "YYYYYYYYYYYYYYYYYYYYYYYY";
var _url = WCMAPI.getServerURL();
var oauth = OAuth({
consumer: {
'public': consumerPublic,
'secret': consumerSecret
},
signature_method: 'HMAC-SHA1',
parameter_seperator: ",",
nonce_length: 6
});
var url_api = '/api/public/ecm/dataset/datasets';
var request_data = {
url: _url + url_api,
method: 'POST'
};
var token = {
'public': tokenPublic,
'secret': tokenSecret
};
var authorized = oauth.toHeader( oauth.authorize(request_data, token) );
var obj = {
"name" : "dataset_teste_municipios",
"fields" : ["nomeEstado", "codEstado", "nomeMunicipio", "codMunicipio"],
"constraints" : [{
"_field" : "codEstado",
"_initialValue": "DF",
"_finalValue" : "DF",
"_type": 1,
"_likeSearch": false
}],
"order" : ["estado"] }
WCMAPI.Read({
type: request_data.method,
url: request_data.url,
async: true,
data: obj,
contentType: "application/json",
headers: authorized,
success: function funcao(data) {
console.log(data);
},
error: function () {
console.log('error');
}
});
Retorno da Requisição:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body onload="document.forms[0].submit()">
<noscript>
<p>
<strong>Note:</strong> Since your browser does not support JavaScript, you must press the Continue button once to proceed.
</p>
</noscript>
<form action="https://teste.fluigidentity.com/cloudpass/SPInitPost/
;receiveSSORequest/gupbtn1hkl4ezfx2/42" method="post">
<div>
<input type="hidden" name="RelayState" value="http://fluig.sistemateste
.org.br/api/public/ecm/dataset/datasets"/>
<input type="hidden" name="SAMLRequest" value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZ
z0iVVRGLTgiPz4KPHNhbWwycDpBdXRoblJlcXVlc3QgQXNzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlVVJMPSJodHRwOi8vZmx1aWcuc
2lzdGVtYWZhZWcub3JnLmJyL3BvcnRhbC9pZHAvQUNTIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9mYWVnLmZsdWlnaWRlbnRpdHkuY
29tL2Nsb3VkcGFzcy9TUEluaXRQb3N0L3JlY2VpdmVTU09SZXF1ZXN0L2d1cGJ0bjFoa2w0ZXpmeDIvNDIiIElEPSJfNjkyYmNjN
TFjYTc2N2QxMDA3NjNmOTk5ZWFhNjdmODQiIElzc3VlSW5zdGFudD0iMjAxNy0wNy0xMFQxOToyMDoyOS41NzBaIiBQcm90b2Nvb
EJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVBPU1QiIFByb3ZpZGVyTmFtZT0iVG90d
nNMYWJzIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIj48c
2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5IiB4bWxuczpzYW1sMj0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI
+VG90dnNMYWJzPC9zYW1sMjpJc3N1ZXI+PHNhbWwycDpOYW1lSURQb2xpY3kgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDp0cmFuc2llbnQiLz48L3NhbWwycDpBdXRoblJlcXVlc3Q
+"/>
</div>
<noscript>
<div>
<input type="submit" value="Continue"/>
</div>
</noscript>
</form>
</body>
</html>
SOLUÇÃO DO PROBLEMA:
Como o Laercio havia me alertado eu estava usando as chaves pra usuário de autenticação OAuth erradas, porém mesmo despois ter corrigido o erro permanecia. Foi ai que ao checar todos os parâmetros eu constatei que a url passada estava errada.
Ao utilizar a chamada:
var _url = WCMAPI.getServerURL();
Ela trazia a minha url como "http://fluig.meusite.com.br:80", e ao utilizar a porta específica a autenticação entrava numa restrição de segurança do Fluig.
Na verdade o código retornado era uma mensagem de erro criptografado. Essa mensagem aparecida pois não estava utilizando a url correta para chamada da API.
— Uákiti Pires 10 de Jan de 2020