am 18.01.2021 10:21
Hallo zusammen,
ich habe ein Problem mit der Erstellung des OAuth2 Authentifikations-Token mittels eines Java Spring POST Requests über https://api.comdirect.de/oauth/token.
Es kommt die Fehlermeldung '
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 400: [{"error":"invalid_request","error_description":"Missing or unsupported parameters"}]'.
Lt. der Dokumentation werden die folgenden Headerattribute gesetzt:
- header.set("accept", "application/json");
- header.set("content-Type", "application/x-www-form-urlencoded");
Als Body setzte ich die folgenden Parameter:
- body.put("client_id", "...");
- body.put("client_secret", ...);
- body.put("username", "Zugangsnummer");
- body.put("password", "PIN");
- body.put("grant_type", "password");
Habt Ihr einen Tipp für mich ob einen Parameter vergessen habe oder einen Wert falsch gesetzt habe? Als grant_type ist der Wert "password" gesetzt, ist das richtig oder muss ein Passwort generiert werden?
Danke,
Jörg
Gelöst! Gzum hilfreichen Beitrag.
am 18.01.2021 10:47
Hallo @JörgF,
herzlich willkommen in der Community!
Wir haben deine Anfrage an die Fachabteilung geschickt und werden dir schreiben, wenn wir eine Rückmeldung erhalten.
Viele Grüße und einen guten Start in die Woche
Jessica
am 18.01.2021 14:08
wenn ich meinen Postman request ansehe (welcher funktioniert), dann schickt er diese Header mit:
Content-Type: application/x-www-form-urlencoded
Accept: application/json
User-Agent: PostmanRuntime/7.26.8
Postman-Token: 398ac458-d388-45a6-b508-e8f20f5e8f6a
Host: api.comdirect.de
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 148
Vielleicht guckst du mal, ob die bei dir auch alle dabei sind (Content Length ist einer, den man gerne vergisst)
am 18.01.2021 14:55
Hallo nochmal @JörgF,
Wir haben für dich folgende Rückmeldung bekommen:
Auf den ersten Blick sieht alles gut aus. Auch der Wert “grant_type“:“password“ ist korrekt. Bitte prüfe, ob du deine client_id und client_secret korrekt übernommen hast (ohne Leerzeichen am Anfang und Ende oder Ähnliches) und ob du deine Zugangsnummer und PIN eingetragen hast. Außerdem können wir dir empfehlen, die bereitgestellte Postman Collection zu nutzen, um den Request dort mithilfe der Postman Console (Menü View -> Show Postman Console) Zeile für Zeile mit dem Request aus deiner Java-Anwendung zu vergleichen. Auch in Java Spring lässt sich wahrscheinlich der komplette Request loggen.
Viele Grüße
Jessica
am 18.01.2021 18:13
Danke für deine Antwort. Ich habe mir Postman eingerichtet und kann die folgende Anfrage dort auch erfolgreich abesenden:
Der Einzigste Headerparameter den ich im Java Code nicht setze ist 'Cookie'. Hast du einen Cookie gesetzt?
18.01.2021 20:55 - bearbeitet 18.01.2021 20:55
@JörgF : nein, einen Cookie habe ich nicht gesetzt. Du kannst dir aus Postman im übrigen den Java Code für den Request generieren lassen. Vielleicht magst du das probieren und den output mit deinem selbst erstellten Code vergleichen?
am 18.01.2021 20:59
Hier gibts dazu übrigens noch mehr Info:
https://blog.postman.com/use-your-work-in-postman-to-generate-code-for-your-apps/
am 19.01.2021 10:49
@uburoi Danke für den Tipp mit dem Postman Code Generator. Mit dem Unirest Request funktioniert es. Was jetzt genau der Unterschied zum Request über das Spring RestTemplate ist muss ich noch rausfinden.
@SMT_Jessica @uburoi Danke Euch beide für die schnelle Hilfe. Das läuft richtig super