Итак, я создаю панель статуса для нашего внутреннего использования в качестве разработчиков здесь, в офисе. Он покажет количество коммитов, часы, отслеживаемые и т. Д.Плохой запрос (400) При попытке аутентифицировать API урожая в реактиве
Я следую за этим model для аутентификации. После того, как пользователь войдет в систему с урожаем, он перенаправляет их обратно в приложение с параметром кода в качестве строки запроса, затем я беру эту строку запроса и передаю ее в состояние, чтобы затем выполнить выборку, чтобы получить токен доступа (так что Я могу позже вывести данные API).
Что происходит, это логин успешно, но когда вы перенаправлены обратно в приложение, выборка вызывает ошибку Bad Request (400). Я тестировал в Postman и могу получить правильный ответ, поэтому я не уверен, в чем проблема ...
Вот некоторые из JS из основного компонента, который устанавливает состояния, если есть параметр кода:
harvestState() {
// grab URL params
let urlParams = queryString.parse(location.search);
console.log(urlParams);
console.log(urlParams.code);
// set the state based on the paramater passed back
urlParams.code ? (
this.setState({
harvestcode: urlParams.code
})
) : (
this.setState({
harvestcode: 'none'
})
);
}
componentWillMount(){
this.harvestState();
}
А вот функция выборки в моем компоненте Harvest:
getHarvest(){
const clientSecret = 'XXXXXXXXXX';
// Set Harvest Headers
const harvestHeaders = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
method: 'POST',
mode: 'no-cors',
body: {
'code': this.props.code,
'client_id': this.props.clientid,
'client_secret': clientSecret,
'redirect_uri': 'http://dash.mycompany.me',
'grant_type': 'authorization_code'
}
};
fetch('https://mycompany.harvestapp.com/oauth2/token', harvestHeaders)
.then(response => response.json())
.then(token => {
console.log(token);
})
}
componentDidMount(){
if(this.props.code !== 'none'){
this.getHarvest();
}
}
есть ли что-то здесь, что я делаю неправильно? Почему он всегда возвращает плохой запрос? Любая помощь будет оценена по достоинству. Спасибо!
Я замечаю 'mode: 'no-cors'', поэтому клиентское веб-приложение, выполняющее запросы, работает на одном и том же источнике (схема + домен + порт) в качестве сервера, на который отправляются запросы? – sideshowbarker
@sideshowbarker Нет, они находятся на разных серверах, но без его использования. Я получаю консольный журнал, чтобы включить его, чтобы получить ответ ... – buschschwick