Sto cercando di utilizzare fetch
React Native per ottenere informazioni dall'API Product Hunt. Ho ottenuto il token di accesso corretto e l'ho salvato nello stato, ma non riesco a passarlo all'interno dell'intestazione di autorizzazione per una richiesta GET.
Ecco cosa ho finora:
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'aspettativa che ho per il mio codice è la seguente:
- Innanzitutto, farò
fetch
un token di accesso con i dati dal mio modulo API importato - Successivamente, imposterò la
clientToken
proprietà dithis.state
uguale al token di accesso ricevuto. - Quindi, eseguirò
getPosts
che dovrebbe restituire una risposta contenente una serie di post correnti da Product Hunt.
Sono in grado di verificare che il token di accesso sia stato ricevuto e che lo this.state
stia ricevendo come clientToken
proprietà. Sono anche in grado di verificare che getPosts
è in esecuzione.
L'errore che sto ricevendo è il seguente:
{"errore": "unauthorized_oauth", "error_description": "Fornisci un token di accesso valido. Consulta la nostra documentazione API su come autorizzare una richiesta API. Assicurati inoltre di richiedere gli ambiti corretti. Ad esempio" pubblico privato \ "per accedere agli endpoint privati."}
Ho lavorato sul presupposto che in qualche modo non sto passando il token di accesso correttamente nella mia intestazione di autorizzazione, ma non riesco a capire esattamente il perché.