Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Gelöst -Node.JS Authentication funktioniert nicht

Jason2141234
Autor
2 Beiträge

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.
1 ANTWORT

Jason2141234
Autor
2 Beiträge

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)
  })