Tutorial/Beispiele API-Nutzung
-
Generelle Frage
Hey, ich studiere momentan Informatik, allerdings komme ich nicht dahinter, wie ich die alte API nutzen kann.
Ich nutze Python, da es sich zum scripten eignet, wenn jemand in einer anderen Sprache helfen kann, kein Problem.response = requests.post( "https://kirche.church.tools?q=login/ajax&func=user", data={'email': email, 'password': password} )
Ausgabe von response.json(): {'status': 'success', 'data': 'Login successful'}. Sieht ja soweit ganz gut aus.
Den Cookie kann ich mir auch speichern, sieht ungefähr so aus: {'ChurchTools_ct_kirche': 'asdf1234'}
Wenn ich den Cookie an andere Requests anhänge, kommen allerdings Fehler wie: {"message":"CSRF-Token is invalid","translatedMessage":"Die Session ist abgelaufen, bitte logge dich erneut ein.","messageKey":"exception.unauthorized","args":[],"errors":[]}
Wo bekomme ich einen solchen Token her? Sorry für die Unwissenheit. Wenn ich sonst API-Keys nutze, erzeuge ich diese in der App selbst.Eigentliche Frage
Mein eigentliches Projekt ist es gerade, Songs per API hochzuladen. Dazu möchte ich durch die Songbeamerdateien (.sng) im Ordner iterieren und pro Datei einen Post-Request machen, in dem ich erforderliche Daten wie Titel angebe und auch die .sng Datei hinzufüge, damit sie direkt in CT beim Song liegt.
Leider ist der Endpunkt "addNewSong" noch nicht in der neuen API dokumentiert.
Ich habe auch schon den Beitrag hier bezüglich Song hochladen gelesen, aber bin nicht wirklich schlau daraus geworden, wobei es dann auch um song_arrangement ging, was ich nicht brauche.Vielleicht kann mir ja jemand helfen. LG Christopher
-
Hi @corth50,
ich bin schon über den gleichen Fehler gestoßen. Das Problem ist, dass du zunächst einen CSRF-Token abrufen musst, den du dann im Header "csrf-token" übergeben musst. Den CSRF-Token bekommst du über den REST-Endpunkt https://mychurch.church.tools/api/csrf
Um einen neuen Song zu erstellen musst du tatsächlich die alte AJAX-API verwenden. Dafür einen POST-Request auf: https://mychurch.church.tools/index.php?q=churchservice/ajax mit folgenden POST-Daten und dem CSRF-Token im Header:
{ "bezeichnung": "Neuer SongTitel", "songcategory_id": 0, "author": "new author", "copyright": "test", "tonality": "Bb", "bpm": 122, "beat": "4/4", "func": "addNewSong" }
Du kannst Dateien allerdings nicht an einen Song anhängen. Du müsstest also erst den Song erstellen, dann das Standard-Arrangement abrufen und an dieser Arrangement dann die Datei hochladen (so wie im verlinkten Forenbeitrag beschrieben).
Ich hoffe das hilft dir weiter.
VG Lukas
-
@DumbergerL Danke für die gute Erklärung
@corth50 hier noch unsere Hilfe Seite zum CSRF: https://hilfe.church.tools/wiki/0/API-CSRF