erro autenticação consumo api javascript fetch

JavaScript

27/10/2023

Bom dia prezados


Fiz um teste no postman para consumir uma api e deu tudo certo
no entanto jogando para o fetch do javascript da erro de autorização 401

o código que estou usando é esse ficarei muito grato se alguem puder me dar uma luz

ar myHeaders = new Headers();
myHeaders.append("Authorization", "Basic ZXhjZWxlbmNpYXdlYi10aGlhZ286Zm1qQ3gxVTVoSGlMTEVERzBLVk82cWRKdWVTTmUxeDU=");

var raw = "";

var requestOptions = {
method: ''''GET'''',
headers: myHeaders,
mode: ''''no-cors'''',
//body: raw,
redirect: ''''follow''''
};

fetch("https://api.sienge.com.br/excelenciaweb/public/api/v1/bills/?startDate=2018-01-01&endDate=2023-12-31&limit=400&offset=200", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log(''''error'''', error));
Thiago

Thiago

Curtidas 0

Respostas

Diego Marinho

Diego Marinho

27/10/2023

Pode ser várias coisas, algum erro de cors, por exemplo... mas talvez seja um erro de promisse. Tenta jogar esse fetch pra dentro de uma função assíncrona e dentro da função, você coloca um await antes dele.... mais ou menos assim :

    async function  MinhaApi (api, op){

        const  chamando =  fetch(api , op).then(o=> o.json())
        console.log (chamando)
        return chamando
    }

     // Aqui você chama a função :
    MinhaApi ("https://api.sienge.com.br/excelenciaweb/public/api/v1/bills/?startDate=2018-01-01&endDate=2023-12-31&limit=400&offset=200", requestOptions )

GOSTEI 0
Diego Marinho

Diego Marinho

27/10/2023

Só esqueci do principal -> coloca o await antes do fetch.
E substitui o json() que eu coloquei por text(), pq pelo oq vc pôs lá em cima, vc quer um text.


const  chamando =  await fetch(api , op).then(o=> o.text())




GOSTEI 0
Aline Ribeiro

Aline Ribeiro

27/10/2023

Bom dia prezados


Fiz um teste no postman para consumir uma api e deu tudo certo
no entanto jogando para o fetch do javascript da erro de autorização 401

o código que estou usando é esse ficarei muito grato se alguem puder me dar uma luz

ar myHeaders = new Headers();
myHeaders.append("Authorization", "Basic ZXhjZWxlbmNpYXdlYi10aGlhZ286Zm1qQ3gxVTVoSGlMTEVERzBLVk82cWRKdWVTTmUxeDU=");

var raw = "";

var requestOptions = {
method: ''''GET'''',
headers: myHeaders,
mode: ''''no-cors'''',
//body: raw,
redirect: ''''follow''''
};

fetch("https://api.sienge.com.br/excelenciaweb/public/api/v1/bills/?startDate=2018-01-01&endDate=2023-12-31&limit=400&offset=200", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log(''''error'''', error));
GOSTEI 0
Aline Ribeiro

Aline Ribeiro

27/10/2023

Opa tudo bem?
O code 401 é não autorizado, significa que esta com problema de autenticação na aplicação.
No trecho abaixo acredito que seja Bearer + token em vez de Basic. Acredito que o Basic espera um login e um password. Outra coisa é esse token expira em quanto tempo?
myHeaders.append("Authorization", "Basic ZXhjZWxlbmNpYXdlYi10aGlhZ286Zm1qQ3gxVTVoSGlMTEVERzBLVk82cWRKdWVTTmUxeDU=");

Fiz um teste usando o Bearer com esse token e deu 401 tbm então tem que ver essa questão do token e o modo de autenticação.
GOSTEI 0
Diego Marinho

Diego Marinho

27/10/2023

Mas de onde você tá consumindo esses dados ?
Precisa de algum login e senha ?
No postman vc passava algum login de usuário ?
Se sim. No javascript, como vc tá passando esses dados da login e senha ?
Tem algum link da documentação dessa api ?

GOSTEI 0
Diego Marinho

Diego Marinho

27/10/2023

Olá Aline. Tinha bugado seu post, e não tinha aparecido um pedaço dele pra mim. Agora que eu vi que vc tá usando a mesma api do Tiago...
Esse primeiro post, meu, com as requisições assíncronas, pra mim funcionou.
Porém, agora fui testar, deu ruim... tá dando erro 401.
Provavelmente essa plataforma tenha algum tipo de configuração de conta que interfere na sua requisição.
Eu dei uma olhada no site, mas precisa fazer uma conta pra ter mais informação.
Mas é isso. Se você tiver uma conta lá, dá uma procurada pra vê se tem alguma configuração de conta bloqueando sua requisição.
Vai que é isso.
Boa sorte.
GOSTEI 0
POSTAR