Tradovate API

Tradovate OAuth-Token-Fehler 'invalid_client'

Ihr Token-Austausch liefert invalid_client statt eines Access Tokens. Hier erfahren Sie, warum die drei App-Identitätsfelder nicht übereinstimmen und wie Sie jedes einzelne beheben.

Geprüft vom PickMyTrade Trading Systems Team Zuletzt aktualisiert
· 7 Minuten Lesezeit
Tradovate OAuth-Token-Austausch-Antwort mit dem invalid_client-Fehler, der zeigt, dass client_id, redirect_uri und client_secret nicht mit der bestehenden Einrichtung übereinstimmen

Sie haben einen frischen Autorisierungscode in der Hand, senden den Token-Austausch ab, und statt eines Access Tokens bekommen Sie [invalid_client] client_id, redirect_uri and client_secret do not match existing setup um die Ohren gehauen. Er erscheint als invalid_client, manchmal verpackt in einen 400- oder 401-Statuscode, und stoppt Ihre Tradovate-Integration eiskalt, bevor auch nur eine einzige Order rausgehen kann.

Das Beruhigende daran: Dieser Fehler bedeutet fast nie, dass bei Tradovate etwas kaputt ist. Er bedeutet, dass die drei Werte, die Ihre App beim Token-Austausch identifizieren, nicht mit dem übereinstimmen, was Sie registriert haben. Beheben Sie die Abweichung, und genau dieselbe Anfrage, die gerade fehlschlägt, geht sofort durch.

Im Folgenden finden Sie jeden Grund, warum diese Abweichung auftritt, in der Reihenfolge, in der Sie am wahrscheinlichsten darauf stoßen, mit den genauen Stellen, die Sie in Ihrer OAuth-App und Ihrem Code prüfen sollten.

Schnelle Checkliste für den invalid_client-Fehler

  • Falsche client_id, kopieren Sie sie erneut aus Ihrer registrierten OAuth-App; achten Sie auf ein führendes Leerzeichen oder einen abschließenden Zeilenumbruch.
  • Falsches client_secret, wenn Sie es jemals neu generiert haben, ist der alte Wert tot; fügen Sie überall den aktuellen Wert ein.
  • redirect_uri nicht identisch, sie muss byte-genau mit dem registrierten Wert übereinstimmen, sowohl im Autorisierungsschritt als auch beim Token-Austausch.
  • Live-/Demo-Verwechslung, senden Sie die Token-Anfrage an dieselbe Umgebung, in der Ihre App registriert wurde.
  • Veralteter Beispielcode, alte Beispiel-Repos enthalten überholte Endpunkt-URLs; gleichen Sie Ihre mit der aktuellen offiziellen Dokumentation ab.
  • Zugangsdaten an der falschen Stelle, stellen Sie sicher, dass grant_type, code, client_id, client_secret und redirect_uri tatsächlich alle im Request-Body enthalten sind.

Was "[invalid_client] client_id, redirect_uri and client_secret do not match existing setup" bedeutet

OAuth unterteilt Ihre Integration in zwei getrennte Identitäten. Die eine sind Sie, der Kontoinhaber, nachgewiesen durch Ihren Benutzernamen und Ihr Passwort. Die andere ist Ihre App, nachgewiesen durch eine client_id und ein client_secret. Der invalid_client-Fehler betrifft ausschließlich Letztere. Es ist die Standardantwort von OAuth 2.0 für “client authentication failed,” und Tradovate gibt genau an, welche Felder geprüft wurden: client_id, redirect_uri und client_secret.

Wenn Sie das sehen, ist der Autorisierungscode, den Sie gerade erhalten haben, in der Regel in Ordnung. Der Server ist so weit gekommen, die Identität Ihrer App zu prüfen, hat die drei gesendeten Werte mit dem bei der Registrierung gespeicherten Datensatz verglichen, einen Unterschied festgestellt und die Weiterverarbeitung verweigert. Er verrät Ihnen nicht, welcher der drei Werte falsch ist. Das ist der lästige Teil, und deshalb ist die Behebung ein Ausschlussverfahren.

Die Anfrage, die ihn auslöst, ist Ihr Token-Austausch: ein POST an den OAuth-Token-Endpunkt auf dem Host Ihrer Umgebung (live.tradovateapi.com für live, demo.tradovateapi.com für demo) mit grant_type=authorization_code, dem code und den drei Identitätsfeldern. Bei Erfolg werden ein access_token und ein expires_in zurückgegeben. Bei einem Fehler werden error und error_description zurückgegeben, und hier lautet dieser Fehler invalid_client.

Häufigste Ursachen für den invalid_client-Fehler

1. Die client_id stimmt nicht mit Ihrer registrierten App überein

Das ist die einfachste Ursache und die am leichtesten zu übersehende. Die client_id in Ihrer Token-Anfrage muss diejenige sein, die Tradovate bei der Registrierung Ihrer OAuth-App vergeben hat. Kleine Stolperfallen dabei: den Namen der App statt ihrer ID einfügen, eine ID aus einer anderen App verwenden oder beim Kopieren ein unsichtbares Leerzeichen oder einen Zeilenumbruch mitschleppen. Whitespace ist am tückischsten, weil der Wert in Ihrem Editor richtig aussieht. Kopieren Sie die ID erneut direkt vom Registrierungsbildschirm und entfernen Sie überflüssige Leerzeichen.

Tradovate OAuth application registration form under API Access showing the client id, redirect uri and secret fields

2. Das client_secret ist falsch oder wurde neu generiert

Das client_secret ist die Passwort-Hälfte der Identität Ihrer App und muss exakt übereinstimmen. Die klassische Falle ist die Neugenerierung: Sie klicken irgendwann auf “regenerate secret” um es zu rotieren, die Plattform stellt ein neues aus, und der alte Wert ist nun dauerhaft ungültig. Wenn Ihr Code, Ihre .env-Datei oder Ihre Deployment-Konfiguration noch das vorherige Secret enthält, liefert jeder einzelne Austausch invalid_client. Dasselbe passiert, wenn Sie nie wirklich ein Secret generiert haben und einen leeren Wert oder einen Platzhalter senden.

3. Die redirect_uri stimmt nicht byte-genau überein

Das ist die Ursache, die am meisten Zeit frisst, weil die URIs auf den ersten Blick gleich aussehen. Die redirect_uri muss an drei Stellen identisch sein: dem Wert, der auf Ihrer registrierten App gespeichert ist, dem Wert in Ihrer Autorisierungsanfrage und dem Wert in Ihrem Token-Austausch. Identisch bedeutet Zeichen für Zeichen. All Folgendes zählt als unterschiedlich:

  • Ein abschließender Schrägstrich bei der einen, aber nicht bei der anderen (/callback vs. /callback/).
  • http an einer Stelle, https an einer anderen.
  • Eine Portnummer hier vorhanden, dort fehlend (localhost:3030 vs. localhost).
  • Unterschiedliche Groß-/Kleinschreibung an einer beliebigen Stelle im Pfad.
  • localhost an einer Stelle und 127.0.0.1 an einer anderen.

Jede einzelne dieser Abweichungen führt dazu, dass Tradovate sie als nicht registrierten Redirect behandelt und in die invalid_client-Antwort einfließen lässt.

Side by side of the authorize request redirect_uri and the token exchange redirect_uri highlighting that they must match exactly

4. Sie haben in einer Umgebung registriert und rufen die andere auf

Eine OAuth-App ist an eine einzige Umgebung gebunden. Registrieren Sie sie auf demo, existieren ihre client_id und ihr client_secret nur auf der Demo-Seite. Wenn Ihre Autorisierungs-URL oder Ihr Token-Austausch auf den Live-Host zeigt, während die App auf demo liegt, oder umgekehrt, werden die Zugangsdaten dort schlicht nicht gefunden, und Sie erhalten invalid_client. Stellen Sie fest, in welcher Umgebung Sie registriert haben, und sorgen Sie dann dafür, dass sowohl der Autorisierungsschritt als auch der Token-Endpunkt dieselbe Umgebung ansteuern.

5. Sie verwenden veralteten Beispielcode

OAuth-Beispiele veralten mit der Zeit. Ein älteres Beispielprojekt kann Endpunkt-URLs, eine fest codierte redirect_uri oder eine Request-Struktur enthalten, die nicht mehr zu einer frisch registrierten App passt. Wenn Sie ein Tutorial geklont haben und es “just doesn't work,” gehen Sie nicht gleich davon aus, dass Ihre Zugangsdaten falsch sind. Prüfen Sie zuerst, ob die Endpunkte und der Request-Body in diesem Code noch mit der aktuellen offiziellen Tradovate-Dokumentation übereinstimmen, bevor Sie eine Stunde mit der Fehlersuche an Ihrem Secret verbringen.

6. Die Zugangsdaten fehlen oder befinden sich im falschen Teil der Anfrage

Jedes Feld, das der Server prüft, muss tatsächlich ankommen, an der richtigen Stelle, im richtigen Format. Ihr Token-POST benötigt grant_type=authorization_code, den code, client_id, client_secret und redirect_uri, gesendet im Body so, wie es die aktuelle Dokumentation vorgibt. Lassen Sie eines der drei Identitätsfelder weg oder senden Sie den Body in einem Format, das der Endpunkt nicht erwartet, kann die App nicht authentifiziert werden, was sich als invalid_client zeigt.

So beheben Sie den invalid_client-Fehler: Schritt für Schritt

1

Kopieren Sie client_id und client_secret erneut

Öffnen Sie den Registrierungsbildschirm Ihrer OAuth-App (im Bereich API Access Ihrer Einstellungen). Kopieren Sie die client_id frisch und fügen Sie sie in Ihre Konfiguration ein, löschen Sie dann alle überflüssigen führenden oder abschließenden Leerzeichen. Machen Sie dasselbe mit dem client_secret; wenn Sie nicht sicher sind, ob das aktuelle mit Ihrem Code übereinstimmt, generieren Sie es neu, aktualisieren Sie jede Stelle, an der es gespeichert ist, und deployen Sie erneut.

2

Notieren Sie die registrierte redirect_uri

Halten Sie die exakte redirect_uri fest, die auf der App gespeichert ist, damit Sie sie im nächsten Schritt mit Ihrem Code vergleichen können.

3

Legen Sie die redirect_uri als eine einzige Konstante fest

Definieren Sie in Ihrem Code eine REDIRECT_URI-Konstante pro Umgebung. Verwenden Sie genau diese Konstante, um sowohl die Autorisierungs-URL als auch den Token-Austausch-Body zu erstellen, tippen Sie sie nie erneut ab. Vergleichen Sie sie mit dem registrierten Wert, achten Sie dabei auf Schrägstriche, Schema, Port und Groß-/Kleinschreibung, und aktualisieren Sie die jeweils falsche Seite, sodass alle drei Kopien identisch sind.

4

Bestätigen Sie Umgebung und Endpunkte

Bestimmen Sie, in welcher Umgebung die App registriert ist, live oder demo. Richten Sie die Autorisierungsanfrage an https://trader.tradovate.com/oauth mit response_type=code, Ihrer client_id und der passenden redirect_uri. Senden Sie den Token-Austausch an den OAuth-Token-Endpunkt auf dem Host derselben Umgebung, live.tradovateapi.com oder demo.tradovateapi.com, unter Verwendung des exakten Pfads aus der aktuellen API-Referenz.

5

Führen Sie den Ablauf komplett erneut aus

Fordern Sie einen brandneuen Autorisierungscode an und tauschen Sie ihn sofort aus. Codes sind nur einmal verwendbar, verwenden Sie also nicht denjenigen erneut, der bereits fehlgeschlagen ist.

Tradovate OAuth app settings showing the client secret value and a regenerate secret option

Fehlerbehebungstabelle

Fehler Bedeutung Lösung
[invalid_client] client_id, redirect_uri and client_secret do not match existing setupEin oder mehrere der drei App-Identitätsfelder stimmen nicht mit der registrierten OAuth-App überein.Kopieren Sie client_id und client_secret erneut; sorgen Sie dafür, dass redirect_uri an allen drei Stellen identisch ist.
invalid_client (ohne Details)Client-Authentifizierung fehlgeschlagen, die App konnte nicht identifiziert werden.Stellen Sie sicher, dass client_id/secret korrekt und im Request-Body enthalten sind, nicht leer gelassen.
invalid_grantDer Autorisierungscode ist abgelaufen, bereits verwendet oder an eine andere redirect_uri gebunden.Fordern Sie einen neuen Code an und tauschen Sie ihn sofort mit der passenden redirect_uri aus.
redirect_uri_mismatchDie redirect_uri stimmt nicht mit der auf der App hinterlegten überein.Gleichen Sie Schema, Host, Port, Pfad und abschließenden Schrägstrich byte-genau ab.
unsupported_grant_typeDer Wert von grant_type fehlt oder ist falsch geschrieben.Senden Sie exakt grant_type=authorization_code.
Zugangsdaten auf demo gültig, auf live fehlgeschlagenApp in einer Umgebung registriert, Anfrage an die andere gesendet.Richten Sie Autorisierungs-URL und Token-Endpunkt auf die eigene Umgebung der App aus.

So vermeiden Sie das mit PickMyTrade

Der gesamte OAuth-Handshake existiert, damit Software für Sie mit Ihrem Konto handeln kann. Wenn diese Software PickMyTrade ist, fassen Sie nie ein client_secret an oder debuggen eine redirect_uri überhaupt, Sie verbinden Ihr Tradovate-Konto einmal und leiten Ihre TradingView-Alerts von dort aus zu Live-Orders weiter.

  • Geführte Kontoverbindung, verknüpfen Sie Tradovate über einen geführten Ablauf, statt einen Token-Austausch von Hand zu bauen.
  • Verwaltete Sessions, der Token-Lebenszyklus und Erneuerungen laufen im Hintergrund, sodass Sie keinen Auth-Code am Leben erhalten müssen.
  • Umgebungsbewusstes Routing, demo und live bleiben getrennt, sodass Zugangsdaten sich nie in die Quere kommen.
  • Multi-Konto-Synchronisierung, spiegeln Sie denselben Alert auf mehrere Konten, ohne für jedes einzelne OAuth einzurichten.

Überspringen Sie den OAuth-Handshake

Verbinden Sie Tradovate einmal mit PickMyTrade und leiten Sie Ihre TradingView-Alerts zu Live-Orders weiter, ohne client_secret oder redirect_uri debuggen zu müssen.

Starten Sie Ihre kostenlose 5-Tage-Testversion

Häufig gestellte Fragen

Er bedeutet, dass Tradovate Ihre Anwendung während des Token-Austauschs nicht authentifizieren konnte. Die vollständige Meldung, [invalid_client] client_id, redirect_uri and client_secret do not match existing setup, sagt Ihnen, dass mindestens einer dieser drei Werte in Ihrem POST nicht mit dem für Ihre registrierte OAuth-App gespeicherten Datensatz übereinstimmt. Der Autorisierungscode war in Ordnung; die App-Identität ist das, was fehlgeschlagen ist.

Ihr Web-Login verwendet Ihren Benutzernamen und Ihr Passwort. Der OAuth-Token-Austausch verwendet einen separaten Satz von Zugangsdaten, client_id und client_secret, die zur App gehören, die Sie registriert haben, nicht zu Ihrem Trading-Konto. Ein einwandfreier Web-Login sagt nichts darüber aus, ob diese App-Zugangsdaten korrekt sind, sodass beide unabhängig voneinander erfolgreich sein oder fehlschlagen können.

Byte-genau. Die redirect_uri in der Autorisierungsanfrage und die im Token-Austausch müssen beide Zeichen für Zeichen mit dem auf der App gespeicherten Wert übereinstimmen. Ein abschließender Schrägstrich, http statt https, ein anderer Port oder eine andere Groß-/Kleinschreibung zählen alle als Abweichung. Definieren Sie eine Konstante und verwenden Sie sie überall wieder.

Ja. Eine OAuth-App wird gegen eine einzige Umgebung registriert. Wenn Sie auf demo registriert haben, die Token-Anfrage aber an den Live-Host senden, oder umgekehrt, werden die Zugangsdaten nicht gefunden und Sie erhalten invalid_client. Richten Sie die Autorisierungs-URL und den Token-Endpunkt auf dieselbe Umgebung aus, in der Ihre App erstellt wurde.

Das Neugenerieren eines Secrets macht das alte sofort ungültig. Wenn Ihr Code, Ihre Umgebungsdatei oder Ihr Deployment weiterhin den vorherigen Wert sendet, schlägt jeder Austausch fehl. Kopieren Sie das neue Secret an jede Stelle, an der es gespeichert ist, deployen Sie erneut, und leeren Sie jeden gecachten Konfigurationsstand, damit nichts weiterhin die ausgemusterte Zeichenfolge übergibt.

Nein, und der Unterschied weist Sie auf das eigentliche Problem hin. invalid_client betrifft die App-Identität, eine falsche client_id, ein falsches client_secret oder eine nicht übereinstimmende redirect_uri. invalid_grant betrifft den Autorisierungscode, er ist abgelaufen, wurde bereits verwendet oder wurde für eine andere redirect_uri ausgestellt. Wenn Sie invalid_grant sehen, fordern Sie einen neuen Code an, statt Ihr Secret erneut zu prüfen.

OAuth mit client_id und client_secret ist ein Weg, und es ist derjenige, der invalid_client auslöst. Tradovate unterstützt außerdem eine direkte Access-Token-Anfrage mit einer App-ID und einem API-Secret. Wenn Sie Ihr eigenes Konto automatisieren und keine anderen Nutzer durch einen Consent-Screen leiten müssen, ist die direkte Token-Anfrage oft einfacher und umgeht den OAuth-Handshake vollständig.

Öffnen Sie den Anwendungs- oder Einstellungsbereich Ihres Kontos, gehen Sie zum Abschnitt API Access, und suchen Sie die von Ihnen erstellte OAuth-Registrierung. Dort befinden sich die client_id und das client_secret sowie die von Ihnen gespeicherte redirect_uri. Bezeichnungen ändern sich mit der Zeit; wenn Sie keinen API-Access-Tab sehen, prüfen Sie das aktuelle Layout der Einstellungen oder die offizielle Dokumentation für den entsprechenden Bildschirm.

Diese Anleitung dient ausschließlich zu Bildungs- und Informationszwecken und stellt keine Finanz-, Anlage- oder Handelsberatung dar. Der Handel mit Futures und anderen gehebelten Produkten birgt ein erhebliches Verlustrisiko und ist nicht für jeden Anleger geeignet. PickMyTrade ist eine unabhängige Drittanbieter-Automatisierungsplattform und steht in keiner Verbindung zu Tradovate, Inc. und wird von diesem Unternehmen weder unterstützt noch gesponsert. Alle zugehörigen Namen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Plattformfunktionen und -schritte ändern sich im Laufe der Zeit; bestätigen Sie daher stets den aktuellen Ablauf in der offiziellen Plattformdokumentation, bevor Sie handeln.