REST-API - CD Secondary Flow
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
am 25.02.2025 11:53
Hi,
ich versuche mich momentan über die comdirect REST Api mit meinem Konto zu verbinden in der Hoffnung einiges automatisieren zu können.
Folgende Schritte funktionieren soweit ich das absehe:
- 2.1 OAuth2 Resource Owner Password Credentials Flow
- 2.2 Abruf Session-Status
- 2.3 Anlage Validierung einer Session-TAN
- 2.4 Aktivierung einer Session-TAN
Beim Schritt: "2.5 CD Secondary Flow" bekomme ich einen Fehler zurück:
{"error":"invalid_client","error_description":"Bad client credentials"}
Ich verwende libCURL und baue mir den POST wie folgt zusammen:
/**
** ===================================================
** URL: https://api.comdirect.de/oauth/token
** HTTP-Method: POST
** ===================================================
***/
curl_easy_setopt(curl, CURLOPT_URL, "https://api.comdirect.de/oauth/token");
/* Now specify we want to POST data */
curl_easy_setopt(curl, CURLOPT_POST, 1L);
/* provide a buffer to store errors in */
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
/**
** ===================================================
** HEADER
** ===================================================
***/
/* Create header according to comdirect api description */
list = curl_slist_append(list, "Accept: application/json");
list = curl_slist_append(list, "Content-Type: application/x-www-form-urlencoded");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
/**
** ===================================================
** DATA
** ===================================================
***/
/* Create data according to comdirect api description */
std::string str_DATA;
char *escaped_field = curl_easy_escape(NULL, "User_********************************", 0);
str_DATA+= std::string("client_id=")+std::string(escaped_field)+std::string("&");
curl_free(escaped_field);
escaped_field = curl_easy_escape(NULL, "********************************", 0);
str_DATA+= std::string("client_secret=")+std::string(escaped_field)+std::string("&");
curl_free(escaped_field);
escaped_field = curl_easy_escape(NULL, "cd_secondary", 0);
str_DATA+= std::string("grant_type=")+std::string(escaped_field)+std::string("&");
curl_free(escaped_field);
escaped_field = curl_easy_escape(NULL, "*****************", 0);
str_DATA+= std::string("token=")+std::string(escaped_field);
curl_free(escaped_field);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, str_DATA.c_str());
res = curl_easy_perform(curl);
Den Wert für das "Access-Token" habe ich aus dem:
2.1 OAuth2 Resource Owner Password Credentials Flow
Die beiden werte "client_id" und "client_secret" habe ich gleich wie beim
2.1 OAuth2 Resource Owner Password Credentials Flow
gesetzt und von comdirect erhalten beim anmelden für die API.
Kann mir jemand sagen was ich bei diesem POST falsch mache?
Viele Grüße,
TinTin
- Labels:
-
Apps
- Tags:
- REST API
