Próbuję użyć fetch
w React Native, aby pobrać informacje z API Product Hunt. Uzyskałem właściwy token dostępu i zapisałem go w stanie, ale wydaje się, że nie mogę go przekazać w nagłówku autoryzacji dla żądania GET.
Oto, co mam do tej pory:
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();
},
Oczekiwania, jakie mam wobec mojego kodu, są następujące:
- Najpierw będę
fetch
tokenem dostępu z danymi z mojego zaimportowanego modułu API - Następnie ustawię
clientToken
właściwośćthis.state
równą otrzymanemu tokenowi dostępu. - Następnie uruchomię,
getPosts
która powinna zwrócić odpowiedź zawierającą tablicę aktualnych postów z Product Hunt.
Jestem w stanie zweryfikować, czy token dostępu jest odbierany i czy this.state
otrzymuje go jako swoją clientToken
własność. Jestem również w stanie sprawdzić, czy getPosts
jest uruchamiany.
Otrzymuję następujący błąd:
{"error": "unauthorized_oauth", "error_description": "Podaj prawidłowy token dostępu. Zapoznaj się z naszą dokumentacją API, aby dowiedzieć się, jak autoryzować żądanie API. Upewnij się również, że potrzebujesz poprawnych zakresów. Np. \" private public \ „w celu uzyskania dostępu do prywatnych punktów końcowych”.}
Odpracowałem założenie, że w jakiś sposób nie przekazuję poprawnie tokenu dostępu w nagłówku autoryzacji, ale nie potrafię dokładnie określić, dlaczego.
źródło
Odpowiedzi:
Przykładowe pobieranie z nagłówkiem autoryzacji:
źródło
'Authorization'
Nagłówek cicho nie przywiązują za Firebug. Próbowałem nawet dołączyćcredentials: 'include'
do opcjonalnego obiektu.new Headers()
Okazuje się, że
fetch
źle użyłem tej metody.fetch
oczekuje dwóch parametrów: punktu końcowego API i opcjonalnego obiektu, który może zawierać treść i nagłówki.Pakowałem wybrany obiekt w drugi obiekt, co nie przyniosło mi pożądanego rezultatu.
Oto jak to wygląda na wysokim poziomie:
Skonstruowałem mój obiekt jako taki:
źródło
401
odpowiedź./
koniec brakowało mi ...Miałem ten sam problem, używałem django-rest-knox do uwierzytelniania tokenów. Okazuje się, że nie było nic złego w mojej metodzie pobierania, która wyglądała tak:
Biegałem apache.
To, co rozwiązało ten problem, zmieniło się
WSGIPassAuthorization
na'On'
wwsgi.conf
.Miałem aplikację Django wdrożoną na AWS EC2 i użyłem Elastic Beanstalk do zarządzania moją aplikacją, więc w programie
django.config
zrobiłem to:źródło
źródło