2016-07-02 2 views
3

У меня есть oauth. Но когда я хочу получить токен доступа с помощью функции fetch(), он просто возвращает объект с такими вещами, как _bodyInit, _bodyBlob и заголовки. Поэтому я просто не могу получить объект JSON. Я на Android, если это имеет значение.Нет объекта JSON с fetch()

Код:

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); 
 
     }); 
 
    }); 
 
    }

ответ

4

Вы почти получили это право, вам не хватает на один шаг, хотя!

выборки не возвращает объект JSON, он возвращает объект Response, для того, чтобы получить json object, вы должны использовать 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 
     }); 

Это хорошая практика, чтобы добавить улов только в случае, если что-то идет не так.

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