Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou usando esse codigo e não consigo me autenticar, apos a requisição post, ele devolve uma pagina que não é a que deveria ter devolvido.
OBS: Quando envio a requisição get para pegar o token, não posso armazenar o token diretamente em uma variavel, porque precisso usar a variavel na requisição post, então provavelmente a variavel fica como se fosse local do metodo get do axios, então fiz essa "gambiarra" com o file system, existe alguma outra solução sem ser essa "gambiarra"?
OBS: quando uso o throw duas vezes no callback do fs.readFile, ele da um erro, então usei {} e funcionou, por ele da erro?
const axios = require('axios');
const cheerio = require('cheerio');
var fs = require('fs');
const user = 'example@example.com';
const pass = 'password';
axios.get('https://pagseguro.uol.com.br/', {
timeout: 2000,
withCredentials: true})
.then(function(response){
const $ = cheerio.load(response.data);
var content = $('input').attr('value');
fs.writeFile('token.txt', content, 'utf8', 0o666, 'w', (err) => {if(err) throw err;});
})
.catch(function(error){
console.log(error);
});
axios.post('https://pagseguro.uol.com.br/', {
timeout: 0,
withCredentials: true,
data: {
acsrfToken: fs.readFile('token.txt', 'utf8', 'r', (err, data) => {if(err){console.log(err);} if(data){console.log(data);}}),/
skin: 'ps',
dest: 'REDIR%7Chttps%3A%2F%2Fpagseguro.uol.com.br%2Fhub.jhtml',
user: user,
pass: pass}
})
.then(function(reponse){
var write = reponse.data;
fs.writeFile('index.txt', write, 'utf8', 0o666, 'w', (err) => {if(err) throw err;});
fs.rename('index.txt', 'index.html', (err) => {if(err) throw err;});
})
.catch(function(error){
console.log(error);
});Obrigado, mas ainda não consigo entender o pq ele não devolve a pagina da autenticação.
porque são operações assíncronas.
>
Em 01/05/2017 at 09:50, William Bruno disse:
porque são operações assíncronas.
Entendi, eu fiz uma conexão assíncrona e para devolver a pagina deveria ser uma conexão assíncrona? Tem como fazer isso no axios? Se não, qual modulo você recomanda?
eu fiz ali cara.. pela promise encadeada.
na verdade, por ser assíncrona você precisa controlar o fluxo e esperar acabar uma coisa para depois começar a outra.
>
1 hora atrás, William Bruno disse:
eu fiz ali cara.. pela promise encadeada.
na verdade, por ser assíncrona você precisa controlar o fluxo e esperar acabar uma coisa para depois começar a outra.
Eu usei o codigo que você mandou com login e senha valido, e não devolveu a pagina que deveria autenticar.
E o que significa "devolver a página"? o teu código não tem nenhum trecho que faça isso.
como você tá executando esse script?
>
Em 03/05/2017 at 06:26, William Bruno disse:
E o que significa "devolver a página"? o teu código não tem nenhum trecho que faça isso.
como você tá executando esse script?
Entendi, por ser uma conexão Asyncrona e não Syncrona, então depois do post eu tenho que fazer um get com a pagina que deveria autenticar? No caso a pagina https://pagseguro.uol.com.br/hub.jhtml
Eu estou executando o script no NodeJS 7.7.4
Eu fiz esse script aqui baseado no que você fez, mas não funcionou.
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
const user = 'example@example.com';
const pass = 'password';
axios.get('https://pagseguro.uol.com.br/', {
timeout: 2000,
withCredentials: true
})
.then(function(response){
const $ = cheerio.load(response.data);
return $('input').attr('value');
})
.then(function(content) {
return axios.post('https://pagseguro.uol.com.br/', {
timeout: 0,
withCredentials: true,
data: {
acsrfToken: content,
skin: 'ps',
dest: 'REDIR%7Chttps%3A%2F%2Fpagseguro.uol.com.br%2Fhub.jhtml',
user: user,
pass: pass
}
})
})
.then(function(response){
return axios.get('https://pagseguro.uol.com.br/hub.jhtml', {
withCredentials: true
})
})
.then(function(response){
var write = response.data;
fs.writeFile('index.txt', write, 'utf8', 0o666, 'w', (err) => {if(err) throw err;});
fs.rename('index.txt', 'index.html', (err) => {if(err) throw err;});
})
.catch(function(error){
console.log(error);
});faltou você enviar as credenciais..
>
Em 05/05/2017 at 08:38, William Bruno disse:
faltou você enviar as credenciais..
Eu coloquei nas tres requisições;
withCredentials: true
não cara, eu tô dizendo que você não usou o retorno do post.
>
Em 10/05/2017 at 07:38, William Bruno disse:
não cara, eu tô dizendo que você não usou o retorno do post.
Como faz isso?
depende de como o pagseguro quer receber.
qual documentação você tá seguindo?
>
7 horas atrás, William Bruno disse:
depende de como o pagseguro quer receber.
qual documentação você tá seguindo?
Eu encontrei o axios aqui. https://github.com/mzabriskie/axios
você pode encadear promises. Veja:
axios.get('https://pagseguro.uol.com.br/', { timeout: 2000, withCredentials: true })