2017-01-07 27 views
6

Próbuję użyć axios dla żądania GET z interfejsem API, który wymaga nagłówka Authorization.Używanie Axios GET z nagłówkiem Authorization w aplikacji React-Native

Mój bieżący kod:

const AuthStr = 'Bearer ' + USER_TOKEN; 

gdzie USER_TOKEN jest token dostępu potrzebne. To połączenie ciągów może być problemem, jak gdybym opublikował to jako AuthStr = 'Bearer 41839y750138-391', następujące żądanie GET działa i zwraca dane, które obserwuję.

axios.get(URL, { 'headers': { 'Authorization': AuthStr } }) 
    .then((response => { 
    console.log(response.data); 
    }) 
    .catch((error) => { 
    console.log(error); 
    }); 

Próbowałem również ustawić to jako globalny nagłówek bez powodzenia.

+0

co robi console.log ('na okaziciela' + USER_TOKEN) dać? – Swapnil

+0

Daje nośnik 472397403110 (lub jakikolwiek inny numer tokenowy) –

+1

co daje konsola console.log (typeof (USER_TOKEN))? – Swapnil

Odpowiedz

9

Dla każdego, kto natknie się na ten wpis i może się przydać ... Nie ma w tym nic złego w moim kodzie. Popełniłem błąd polegający na żądaniu kodu dostępu typu client_credentials zamiast kodu dostępu do hasła (#facepalms). FYI używam urlencoded słupek stąd użycie kwerendy .. więc dla tych, które mogą być patrząc na niektóre przykładowy kod .. tutaj jest mój pełny wniosek

Wielkie dzięki @swapnil dla próbuje mi pomóc debugowania to.

const data = { 
     grant_type: USER_GRANT_TYPE, 
     client_id: CLIENT_ID, 
     client_secret: CLIENT_SECRET, 
     scope: SCOPE_INT, 
     username: DEMO_EMAIL, 
     password: DEMO_PASSWORD 
    }; 



    axios.post(TOKEN_URL, Querystring.stringify(data)) 
    .then(response => { 
     console.log(response.data); 
     USER_TOKEN = response.data.access_token; 
     console.log('userresponse ' + response.data.access_token); 
    }) 
    .catch((error) => { 
     console.log('error ' + error); 
    }); 



const AuthStr = 'Bearer '.concat(USER_TOKEN); 
axios.get(URL, { headers: { Authorization: AuthStr } }) 
.then(response => { 
    // If request is good... 
    console.log(response.data); 
    }) 
.catch((error) => { 
    console.log('error ' + error); 
    }); 
+0

jak przekazywać wiele niestandardowych nagłówków w aksjomatach –

-1

Rzeczywiście ten problem powoduje w xcode nie obsługuje http żądanie w localy.

można dodać ten kod w .plist pliku

<key>NSAppTransportSecurity</key> 
    <dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    </dic> 
Powiązane problemy