Nutzung der REST API

Hallo,

Ich möchte saubere Anfragen in NODE-RED durchführen. Kein Problem mit der Authentifizierung und dem access_token. Aber in der Dokumentation steht, dass man den refresh_token (gültig 30 Tage) verwenden muss, um ein neues access_token (gültig 24 Stunden) zu erhalten, und dass man die API-Dokumentation für weitere Informationen aufsuchen sollte:

Allerdings fehlen meiner Meinung nach in der apiDoc entscheidende Informationen:


Wie kann ich hier den refresh_token verwenden?

Vielen Dank im Voraus an alle, die mir helfen können.

Wenn du folgendes aufrufst:

curl --location --request POST 'http://GLADYS_IP_ADDRESS/api/v1/login' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"email":"<email>","password":"<password>"}'

erhältst du 2 Tokens (neben den Benutzerinformationen):

{
"id":"<uuid>",
"firstname":"Cyril",
"lastname":"Beslay",
"email":"<email>",
"language":"fr",
"birthdate":"1989-04-13",
"role":"admin",
"created_at":"2021-11-21T19:01:37.013Z",
"updated_at":"2023-09-22T18:56:11.389Z",
"refresh_token":"<refresh_token>",
"access_token":"<access_token>",
"session_id":"<uuid>"
}

Du kannst das access_token in API-Aufrufen verwenden, wie in der Dokumentation beschrieben. Zum Beispiel:

curl --location --request GET 'http://GLADYS_IP_ADDRESS/api/v1/me' \
--header 'Accept: application/json, text/plain, */*' \
--header 'authorization: Bearer <access_token>'

Wenn das access_token abläuft, kannst du das refresh_token auf diese Weise verwenden, um ein neues zu erhalten:

curl --location --request POST 'http://GLADYS_IP_ADDRESS/api/v1/access_token' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"refresh_token":"<refresh_token>"}'

Du erhältst:

{
"access_token":"<new_access_token>"
}

Bonus :bulb:
Du kannst die Website https://jwt.io/ verwenden, um den Inhalt eines Tokens (access oder refresh) zu verstehen.

Vielen Dank @cicoub13!! Ich dachte, ich hätte das richtig gemacht, aber ich hatte einen Fehler 500… Vielleicht kann man das nur tun, wenn das access_token abgelaufen ist… oder ich habe es falsch gemacht ^^

Es wäre trotzdem gut, noch einmal die REST-API-Dokumentation durchzugehen, um die data-raw-Beispiele und die Antworten hinzuzufügen. Sie sind fast vollständig nicht vorhanden.