3
respostas

API do login

Fala pessoal!

Qual o link da API pra poder autenticar o login? Estou tentando o link: https://instalura-api.herokuapp.com/api/public/login porém está retornando erro tanto pra abir a API no browser quando na chamada do código.

Erro no console quando autentico pela tela de login: POST https://instalura-api.herokuapp.com/api/public/login 415

Erro ao cessar o link pelo browser: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Jun 13 15:51:34 UTC 2019 There was an unexpected error (type=Method Not Allowed, status=405). Request method 'GET' not supported

Minha requisição:

envia(event) { event.preventDefault();

    const requestInfo = {
        method: 'POST',
        body: JSON.stringify({ login: this.login.value, senha: this.senha.value }),
        headers: new Headers({
            'Content-type': 'aplication/json'
        })
    };

    fetch('https://instalura-api.herokuapp.com/api/public/login', requestInfo)
        .then(response => {
            if (response.ok) {
                return response.text();
            } else {
                throw new Error('Não foi possível fazer login');
            }
        })
        .then(token => {
            localStorage.setItem('auth-token', token);
            browserHistory.push('./timeline');
        })
        .catch(error => {
            this.setState({ msg: error.message });
        })
}
3 respostas

Boa tarde, Guilherme! Como vai?

A URL está correta! Contudo, eu vi que vc setou o cabeçalho Content-type com o valor aplication/json quando o correto seria application/json! Faça essa correção e veja se as coisas funcionam como esperado!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Falaaaa Gabriel, beleza!!

Fiz essa correção e a autenticação aparentemente funcionou, porque se coloco login ou senha inválidos ele está apresentando o erro que eu programei. Porém quando coloco o login e senha corretos ele não está direcionando pra página do perfil, ele da um erro e nem carrega a página:

Uncaught TypeError: this.state.fotos.map is not a function ` componentDidMount() { fetch(https://instalura-api.herokuapp.com/api/public/fotos?X-AUTH-TOKEN=${localStorage.getItem('auth-token')}) .then(response => response.json()) .then(fotos => { this.setState({fotos:fotos}); }); }

render() {
    return (
        <div className="fotos container">
            {
                this.state.fotos.map(foto => <FotoItem key={foto.id} foto={foto}/>)
            }
        </div>
    );
}

}`

Nessa parte do código que esta apresentando o erro.

Opa, Guilherme! Isso acontece pq this.state.fotos não deve ser um array e, portanto, não tem o método map()!

No construtor do seu componente em questão, experimente inicializar o estado fazendo this.state = { fotos: [] }, como visto nessa aula e veja se resolve aí! Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!