Estou tentando usar o fetch
React Native para obter informações da API do Product Hunt. Obtive o token de acesso adequado e salvei-o em State, mas não consigo transmiti-lo no cabeçalho de autorização para uma solicitação GET.
Aqui está o que eu tenho até agora:
var Products = React.createClass({
getInitialState: function() {
return {
clientToken: false,
loaded: false
}
},
componentWillMount: function () {
fetch(api.token.link, api.token.object)
.then((response) => response.json())
.then((responseData) => {
console.log(responseData);
this.setState({
clientToken: responseData.access_token,
});
})
.then(() => {
this.getPosts();
})
.done();
},
getPosts: function() {
var obj = {
link: 'https://api.producthunt.com/v1/posts',
object: {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.state.clientToken,
'Host': 'api.producthunt.com'
}
}
}
fetch(api.posts.link, obj)
.then((response) => response.json())
.then((responseData) => {
console.log(responseData);
})
.done();
},
A expectativa que tenho para o meu código é a seguinte:
- Primeiro, vou
fetch
acessar um token com dados do meu módulo API importado - Depois disso, definirei a
clientToken
propriedadethis.state
igual ao token de acesso recebido. - Em seguida, executarei o
getPosts
que deve retornar uma resposta contendo uma matriz de postagens atuais do Product Hunt.
Posso verificar se o token de acesso está sendo recebido e se está sendo recebido this.state
como sua clientToken
propriedade. Também posso verificar se getPosts
está sendo executado.
O erro que estou recebendo é o seguinte:
{"error": "unauthorized_oauth", "error_description": "Forneça um token de acesso válido. Consulte a documentação da API sobre como autorizar uma solicitação de API. Verifique também se você precisa dos escopos corretos. Por exemplo, \" private public \ "para acessar pontos de extremidade privados."}
Estou trabalhando com a suposição de que, de alguma forma, não estou passando o token de acesso corretamente no cabeçalho da minha autorização, mas não consigo descobrir exatamente o porquê.
fonte
Respostas:
Exemplo de busca com cabeçalho de autorização:
fonte
'Authorization'
cabeçalho silenciosamente falha ao anexar por firebug. Eu até tentei incluircredentials: 'include'
no objeto opcional.new Headers()
Acontece que eu estava usando o
fetch
método incorretamente.fetch
espera dois parâmetros: um terminal para a API e um objeto opcional que possa conter corpo e cabeçalhos.Eu estava envolvendo o objeto pretendido em um segundo objeto, o que não me deu o resultado desejado.
Veja como fica em alto nível:
Eu estruturei meu objeto como tal:
fonte
401
resposta./
no final que eu estava faltando ...Eu tive esse problema idêntico, estava usando o django-rest-knox para tokens de autenticação. Acontece que nada estava errado com o meu método de busca, que era assim:
Eu estava correndo apache.
O que resolveu este problema para mim foi mudando
WSGIPassAuthorization
para'On'
noswsgi.conf
.Eu tinha um aplicativo Django implantado no AWS EC2 e usei o Elastic Beanstalk para gerenciar meu aplicativo, então, no seguinte
django.config
, fiz o seguinte:fonte
fonte