2016-07-02 15 views
3

Ich habe eine oauth eingerichtet. Aber wenn ich das Zugriffstoken mit der Funktion fetch() abrufen will, gibt es nur ein Objekt mit Dingen wie _bodyInit, _bodyBlob und Headern zurück. Ich kann also kein JSON-Objekt bekommen. Ich bin auf Android, wenn das irgendwie wichtig ist.Kein JSON-Objekt mit fetch()

Code:

componentDidMount() { 
 
Linking.getInitialURL().then(url => { 
 
     if(url) { 
 
     console.log(url); 
 
     const queries = url.substring(16) 
 
     const dataurl = qs.parse(queries); 
 
     if(dataurl.state === 'ungessable15156145640!') { 
 
      console.log(dataurl.code); 
 
      console.log(dataurl.state); 
 
      return code = dataurl.code; 
 
     } 
 
     } 
 
    }).then((code) => { 
 
     fetch(`https://dribbble.com/oauth/token`, { 
 
     method: 'POST', 
 
     headers: { 
 
      'Accept': 'application/json', 
 
      'Content-Type': 'application/json' 
 
     }, 
 
     body: JSON.stringify({ 
 
      'client_id': 'MY_ID', 
 
      'client_secret': 'MY_SECRET', 
 
      'code': code 
 
     }) 
 
     }) 
 
     .then((res) => { 
 
     var access_token = res; 
 
     console.log(access_token); 
 
     }); 
 
    }); 
 
    }

Antwort

4

Sie es richtig, fast bekam, Sie aber einen Schritt fehlen!

holen kein json-Objekt zurück, das ein Response-Objekt zurückgibt, um die json object zu erhalten, müssen Sie res.json()

fetch(`https://dribbble.com/oauth/token`, { 
     method: 'POST', 
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify({ 
      'client_id': 'MY_ID', 
      'client_secret': 'MY_SECRET', 
      'code': code 
     }) 
     }) 
     .then((res) => { 
     return res.json(); 
     }) 
     .then((json) => { 
     console.log(json); // The json object is here 
     }); 

Es ist eine gute Praxis verwenden, um einen Fang nur für den Fall etwas hinzufügen geht schief.

.then((json) => { 
     console.log(json); // The json object is here 
}); 
.catch((err) => { 
    // Handle your error here. 
})