Hallo,
ich versuche erfolglos, nach 180Tagen einen neuen access token zu erstellen (vor einem 1/2 Jahr es funktioniert !!.)
Ich benutzt macOS mit Safari und DuckDuckGo, Win10 mit Firefox habe ich auch schon probiert, ohne Erfolg.
(POSTMAN funktioniert auch nicht)
Eine clientID wurde erfolgreich erzeugt.
Nun habe ich es erneut mit Win10 + FireFox probiert, natürlich erfolgt !!!
In FireFox ich ein (<id> ersetze ich durch meine ID):
https://iam.viessmann.com/idp/v3/token?grant_type=authorization_code&client_id=<id>&redirect_uri=http://localhost:4200/&code_verifier=2e21faa1-db2c-4d0b-a10f-575fd372bc8c-575fd372bc8c&code=cZ-2dAgsMrGbOxBCn7IRnjTdfGonGvUNffcdFbCowtY
Nach Eingabe von <Benutzer> und <Passwort> bekomme ich zurück:
http://localhost:4200/?code=cZ-2dAgsMrGbOxBCn7IRnjTdfGonGvUNffcdFbCowtY
Den <code> setze ich ein, auch hier ersetze ich <id> durch meine ID:
https://iam.viessmann.com/idp/v3/token?grant_type=authorization_code&client_id=<id>&redirect_uri=http://localhost:4200/&code_verifier=2e21faa1-db2c-4d0b-a10f-575fd372bc8c-575fd372bc8c&code=cZ-2dAgsMrGbOxBCn7IRnjTdfGonGvUNffcdFbCowtYcZ-2dAgsMrGbOxBCn7IRnjTdfGonGvUNffcdFbCowtY
Als Rückgabe bekomme ich immer nur:
{"error":"invalid-token-request"}
Vor einem 1/2 Jahr hat es noch funktioniert.
Ich kann meine Applikation auf einem ESP32 mit dem damaligen token betreiben.
Was ist falsch?? (20sec Eingabezeit beachtet)
Ich kann den Fehler nicht finden!!.
Danke!
Viele Grüße
Jürgen
Hallo Jürgen,
Zunächst, um Missverständnisse zu vermeiden, ein Access Token hat eine Gültigkeit von 1 Stunde. Wovon du wahrscheinlich sprichst, ist ein Refresh Token, welcher eine Gültigkeit von 180 Tagen besitzt und mit Hilfe welchen man Access Token generieren kann.
Hier nun ein paar Dinge, die du ausprobieren könntest, welche helfen könnten:
Bitte probiere diese Punkte einmal aus und gib mir eine Rückmeldung, ob es damit klappt. Du kannst in der Zwischenzeit auch im API Dashboard einen Access Token erstellen, um mit der API arbeiten zu können.
P.S.
Ich habe gesehen, dass du weitere Beiträge zum gleichen Thema erstellt hast. Sind diese Themen doppelt? Dann könntest du sie für die Übersicht bitte entfernen.
Gruß,
Michael
Hallo,
Vielen Dank für die Hinweise.
Richtig, ich spreche von dem REFRESH token, den ich in meinem ESP32 im EEPROM Speicher.
Da ich diese Woche etwas Stress haben, werden ich es am Wochenende erst probieren.
Bei den 4 posts habe ich unterschiedlichen Dinge ausprobiert.
Alle leider ohne Erfolg.
Danke!
Viele Grüße
Jürgen
Hallo,
ich leider kein Refresh token erzeugen:
Ich habe bei der Postman Beispiel Collection für die Viessmann API (GET Authorization request) eingetragen:
http://localhost:4200/?code=wa0v6n4qGNNRJA8pvHeG9eNXs_ExA5bQZeDxaBekpxc
Ich habe bei der Postman Beispiel Collection für die Viessmann API (POST Authorization code exchange) eingetragen:
Dies habe ich in POSTMAN gesendet (SEND)
Rückgabe in POSTMAN:
{
"error": "invalid_grant",
"error_description": "Invalid grant"
}
Was mache ich falsch ???
Viele Grüße
Jürgen Niemann
Hallo,
es funktioniert !!!!!!!
Ich habe vergessen, "offline_access" bei &scope zu definieren.
(100x drauf geschaut, aber nicht gesehen .....)
Vielen Dank und viele Grüße
Jürgen
Hallo Nunu62,
es freut mich, dass du es geschafft hast 🙂
Wie definiert man "Offline_Access" bei &scope? Ich finde das nicht in der Dokumentation. Dort steht nur was von IoT%20User ??
Vielen Dank für deinen Tipp und beste Grüße Martin
Hallo martinsaur-brosch,
Sie haben in der (langen) Zwischenzeit bestimmt die Stelle in der Doku gefunden, in der "offline_access" hinzugefügt wird😀:
curl -X POST "https://iam.viessmann.com/idp/v3/authorize?client_id=my_oauth_client_id&redirect_uri=http://localhost:4200/&response_type=code&code_challenge=2e21faa1-db2c-4d0b-a10f-575fd372bc8c-575fd372bc8c&scope=IoT%20User%20offline_access"
Ich musste heute auch einen neuen "refresh_token" erstellen, da die 180 Tage abgelaufen waren😡. Es wird zwar in der Doku darauf verwiesen, dass die Aktion oben nur eine Wiederholung von Schritt 1 sei, mit dem zusätzlichen "offline_access" Wert in "scope". Leider wird aber auch eine andere "code_challenge" verwendet. Das ist natürlich für ein Beispiel grundsätzlich OK... Aber wenn man es übersieht, dann passt der "code_verifier" in Schritt 2 nicht mehr... Kritischer ist aber, dass der Parameter "code_challenge_method=S256" fehlt.
Michael H., evtl. könnte man die Doku hier ergänzen...