Estoy tratando de usar fetch
React Native para obtener información de la API de Product Hunt. Obtuve el token de acceso adecuado y lo guardé en estado, pero parece que no puedo pasarlo dentro del encabezado de autorización para una solicitud GET.
Esto es lo que tengo hasta ahora:
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();
},
La expectativa que tengo para mi código es la siguiente:
- Primero, obtendré
fetch
un token de acceso con datos de mi módulo API importado - Después de eso, estableceré la
clientToken
propiedad dethis.state
igual al token de acceso recibido. - Luego, ejecutaré lo
getPosts
que debería devolver una respuesta que contenga una serie de publicaciones actuales de Product Hunt.
Puedo verificar que el token de acceso se está recibiendo y que lo this.state
está recibiendo como su clientToken
propiedad. También puedo verificar que getPosts
se está ejecutando.
El error que recibo es el siguiente:
{"error": "unauthorized_oauth", "error_description": "Proporcione un token de acceso válido. Consulte nuestra documentación de api sobre cómo autorizar una solicitud de api. Asegúrese también de que necesita los ámbitos correctos. Por ejemplo," público privado \ "para acceder a puntos finales privados".}
He estado trabajando bajo la suposición de que de alguna manera no estoy pasando el token de acceso correctamente en mi encabezado de autorización, pero parece que no puedo entender exactamente por qué.