Я пытаюсь использовать fetch
в React Native, чтобы получить информацию из API поиска продуктов. Я получил правильный токен доступа и сохранил его в состояние, но, похоже, не смог передать его в заголовке авторизации для запроса GET.
Вот что у меня так далеко:
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();
},
Ожидание, которое я имею для моего кода, следующее:
- Сначала я
fetch
получу токен доступа с данными из моего импортированного модуля API - После этого я установлю
clientToken
свойствоthis.state
равным полученному токену доступа. - Затем я запущу,
getPosts
который должен вернуть ответ, содержащий массив текущих сообщений от Product Hunt.
Я могу проверить, что токен доступа получен и что this.state
он получает его в качестве своего clientToken
свойства. Я также могу проверить, getPosts
что выполняется.
Я получаю следующую ошибку:
{"error": "unauthorized_oauth", "error_description": "Пожалуйста, предоставьте действительный токен доступа. Обратитесь к нашей документации api о том, как авторизовать запрос api. Также убедитесь, что вам требуются правильные области. Например," public public \ " "для доступа к частным конечным точкам."}
Я работал над предположением, что я как-то неправильно передаю токен доступа в своем заголовке авторизации, но, похоже, не могу точно понять, почему.
источник
Ответы:
Пример выборки с заголовком авторизации:
источник
'Authorization'
Заголовок молча не удается пристроить в поджигатель. Я даже пытался включитьcredentials: 'include'
в дополнительный объект.new Headers()
Оказывается, я использовал
fetch
метод неправильно.fetch
ожидается два параметра: конечная точка для API и необязательный объект, который может содержать тело и заголовки.Я обернул предполагаемый объект во второй объект, который не дал мне желаемого результата.
Вот как это выглядит на высоком уровне:
Я структурировал свой объект так:
источник
401
ответ./
в конце, что я пропустил ...У меня была такая же проблема, я использовал django-rest-knox для токенов аутентификации. Оказывается, ничего не случилось с моим методом извлечения, который выглядел так:
Я работал Apache.
Что решить эту проблему для меня изменения
WSGIPassAuthorization
в'On'
вwsgi.conf
.У меня было приложение Django, развернутое на AWS EC2, и я использовал Elastic Beanstalk для управления своим приложением, поэтому
django.config
я сделал это:источник
источник