J'essaie d'utiliser fetch
dans React Native pour récupérer des informations de l'API Product Hunt. J'ai obtenu le jeton d'accès approprié et je l'ai enregistré dans State, mais je ne semble pas pouvoir le transmettre dans l'en-tête d'autorisation pour une demande GET.
Voici ce que j'ai jusqu'à présent:
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();
},
L'attente que j'ai pour mon code est la suivante:
- Tout d'abord, je vais
fetch
un jeton d'accès avec les données de mon module API importé - Après cela, je définirai la
clientToken
propriété dethis.state
pour qu'elle égale le jeton d'accès reçu. - Ensuite, je vais exécuter
getPosts
ce qui devrait renvoyer une réponse contenant un tableau des publications actuelles de Product Hunt.
Je suis en mesure de vérifier que le jeton d'accès est reçu et qu'il le this.state
reçoit comme sa clientToken
propriété. Je suis également en mesure de vérifier que cela getPosts
est en cours d'exécution.
L'erreur que je reçois est la suivante:
{"error": "unauthorized_oauth", "error_description": "Veuillez fournir un jeton d'accès valide. Reportez-vous à la documentation de notre API pour savoir comment autoriser une demande d'API. Veuillez également vous assurer que vous avez besoin des bonnes étendues. Par exemple, \" public privé \ "pour accéder aux points de terminaison privés."}
Je suis parti de l'hypothèse que je ne transmettrais pas correctement le jeton d'accès dans mon en-tête d'autorisation, mais je ne semble pas être en mesure de comprendre exactement pourquoi.