2017-01-07 29 views
6

Я пытаюсь использовать axios для запроса GET с API, для которого требуется заголовок Authorization.Использование Axios GET с заголовком авторизации в приложении React-Native

Мой текущий код:

const AuthStr = 'Bearer ' + USER_TOKEN; 

где USER_TOKEN является маркер доступа необходим. Эта конкатенация строк может быть проблемой, как если бы я опубликовал ее как AuthStr = 'Bearer 41839y750138-391', следующий запрос GET будет работать и возвращает данные, которые я им предоставляю.

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

Я также попытался установить это как глобальный заголовок без успеха.

+0

что делает console.log ('Знаменосец' + USER_TOKEN) дают? – Swapnil

+0

Он дает Bearer 472397403110 (или любой другой токен) –

+1

Что делает console.log (typeof (USER_TOKEN))? – Swapnil

ответ

9

Для всех, кто сталкивается с этим сообщением и может оказаться полезным ... В моем коде нет ничего плохого. Я допустил ошибку при запросе кода доступа типа client_credentials вместо кода доступа к паролю (#facepalms). FYI Я использую urlencoded пост, следовательно, использование строки запроса .. Так для тех, кто может искать какой-то пример кода .. вот мой полный запрос

Большое спасибо @swapnil за попытку помочь мне отлаживать это.

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

как передать несколько пользовательских заголовков в axios –

-1

Фактически эта проблема возникает в xcode, не поддерживает HTTP-запрос в localy.

вы можете добавить этот код в файле .plist

<key>NSAppTransportSecurity</key> 
    <dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    </dic>