Fizemos uma widget que cria uma nova card a partir da informação de que é inserida no formulário via API (/2.0/cards/create).
Via usário autenticado, funciona normal, porém se for acessar pela página publica.
Vi algo sobre as configurações de Oauth. Consegui configurar o oauth provider, porém não encontrei informações mais detalhadas na configuração do oauth APP.
Alguem já conseguiu fazer esse tipo de configuração / conexão?
Fala, Pedro. Dá uma olhada se isso te ajuda!
http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha1.js
http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js
http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js
https://raw.githubusercontent.com/ddo/oauth-1.0a/master/oauth-1.0a.js
- Para consumir algum serviço da API pública, utilize o seguinte código como exemplo:
Observação: mude as informações sinalizadas
var oauth = OAuth({
consumer: {
'public': '<app name>', // nome do aplicativo que você criou
'secret': '<app name>' // nome do aplicativo que você criou
},
signature_method: 'HMAC-SHA1'
});
var request_data = {
url: 'http://<LINK_DO_FLUIG>/api/public/ecm/document/listDocument/2', // Altere o endereço da API desejada
method: 'GET',
data: {}
};
var token = {
'public': '1a4898a6-5da5-4556-9723-0f8b53406ef0', // Seu access token
'secret': 'db4836ac-870c-42e1-8e67-85ace70816e162c1d495-b762-46cf-8129-3ff66124c9e7' // Seu token secret
};
$.ajax({
url: request_data.url,
type: request_data.method,
data: request_data.data,
headers: oauth.toHeader(oauth.authorize(request_data, token))
})
.done(function(data) {
console.log(data); // resposta do serviço executado
});
Fonte: http://fluig.totvs.com/portal/p/10097/articleview/fluig-dev-partner/2833497
Marcos por acaso é necessário realizar alguma tratativa pra descriptografar a resposta da requisição?
@Uákiti, não é necessário!
@Eliézer,
Baixa os arquivos JS e inclui dentro do seu widget (no projeto do Studio) para o widget carregar mais rápido.
Você precisa importar estes arquivos JS onde você precisar consumir algum serviço do fluig não autenticado. Pode ser no view.ftl, que é renderizado na visualização da página ou no edit.ftl, que é renderizado quando a página está no modo de edição. Abs!
@Marcos Jahn, estou tentando utilizar uma ferramenta da microsoft chamada PowerBI para conectar ao API do fluig. O meu maior problema é informar o Headers corretamente. existe uma função chamada
Web.Contents
nessa ferramenta e um parâmetro que eu preciso passar para uma API é o “headers”. Um exemplo seria o seguinte:
Headers = [Accept ="application/json"]
. Você sabe poderia me enviar o retorno da função que você utilizou
oauth.toHeader(oauth.authorize(request_data, token))
para eu ter um exemplo de cabeçalho correto?
conseguiu usar essa api /2.0/cards/create?
estou com problema nela no campo version
pode me ajudar?
Marcos, suas dicas foram muito boas, mas me surgiu uma dúvida. Seu código expõe a chave secreta do usuário oauth, fazendo com que qualquer pessoa tenha acesso, e consiga acessar os serviços do Fluig.
Há uma forma de impedir essa falha de segurança?
@Claudio, o ideal seria você ter uma aplicação pública server side, que servisse como um proxy pra você fazer essas operação com um escopo limitado, lá dentro tu poderia acionar a API somente se for uma API que tu queira que funcione e não expõe a chave pro usuário.
Como é uma página pública, se você não tiver um lugar que limita o escopo do que pode ser feito complica mesmo