24.10.2021 15:24 - bearbeitet 24.10.2021 18:00
So entnehme ich es 1:1 aus den Docs, resultiert in error 400. WHy, oh why?
const axios = require('axios')
axios
.post('https://api.comdirect.de/oauth/token', {
client_id: comdirect.client_id,
client_secret: comdirect.client_secret,
username: comdirect.username,
password: comdirect.password,
grant_type: 'password',
}, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
}
})
.then(res => {
console.log(`statusCode: ${res.status}`)
console.log(res)
})
.catch(error => {
console.error(error)
})Das ist brutal frustrierend. Etliche Varianten resultieren ebenfalls in error 400 oder wenn es auch mir falsch erscheint error 401.am 24.10.2021 17:59
Na gut, dank Postman das ganze doch nach entwurschtelt.
Urlencoded bedarf einem anderen Parameter pass in axios -.-
Cookie ist hier nicht nötig, aber wird später wichtig, insofern hier einfach mal der ganze Code, guid ist aus dem Postman JSON, nicht von mir.
Vielleicht hilft es einem.
// Generate a GUID for this session only
function guid() {
function _p8(s) {
var p = (Math.random().toString(16)+"000000000").substr(2,8);
return s ? "-" + p.substr(0,4) + "-" + p.substr(4,4) : p ;
}
return _p8() + _p8(true) + _p8(true) + _p8();
}
const axios = require('axios')
const params = new URLSearchParams();
params.append('client_id', comdirect.client_id);
params.append('client_secret', comdirect.client_secret);
params.append('grant_type', 'password');
params.append('username', comdirect.username);
params.append('password', comdirect.password);
axios
.post('https://api.comdirect.de/oauth/token', params, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie': guid(),
}
})
.then(res => {
console.log(`statusCode: ${res.status}`)
console.log(res)
})
.catch(error => {
console.error(error)
})