• Aktuell
    • Tags
    • Beliebt
    • Benutzer
    • Gruppen
    • Suche
    • Registrieren
    • Anmelden

    Frage zur Benutzung der API

    ChurchTools Schnittstellen
    2
    4
    1.3k
    Lade mehr Beiträge
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
    • R
      rheydenr
      zuletzt editiert von rheydenr

      Hallo zusammen,
      ich arbeite mich gerade an der API ab... Zunächst wollte ich mich per login anmelden. Das zugehörige Testpäckchen sieht so aus:

      POST https://churchtools.meineDomain.de
      Content-Type: application/x-www-form-urlencoded
      q=login&email=function@meineDomain.de&password=verySecret
      

      (ich teste das per PHP Webstorm)
      Wenn ich den Request losschicke, bekomme ich folgende Antwort von unserem Server:

      POST https://churchtools.meineDomain.de
      
      HTTP/1.1 200 OK
      Server: nginx
      Date: Thu, 06 Sep 2018 21:44:09 GMT
      Content-Type: text/html; charset=UTF-8
      Transfer-Encoding: chunked
      Connection: keep-alive
      Vary: Accept-Encoding
      X-Powered-By: PHP/7.2.9
      Expires: Thu, 19 Nov 1981 08:52:00 GMT
      Cache-Control: no-store, no-cache, must-revalidate
      Pragma: no-cache
      Content-Security-Policy: default-src 'self'; script-src 'self' maps.google.com *.googleapis.com www.google.com *.gstatic.com js.stripe.com 'unsafe-eval'; style-src 'self' *.googleapis.com 'unsafe-inline'; font-src 'self' *.gstatic.com; img-src * data: blob; child-src * data; connect-src *; object-src 'self' www.youtube.com
      Set-Cookie: ChurchTools_mmmmmm_ctools=2m4hfn59mn7ntgpfdf81rukao9; expires=Fri, 07-Sep-2018 21:44:09 GMT; Max-Age=86400; path=/; secure; HttpOnly
      X-Powered-By: PleskLin
      

      Das sieht ja eigentlich ganz ok aus. Die zurückgelieferte HTML-Seite fängt aber so an:

      &lt!DOCTYPE html>
      &lthtml lang="de">
      &lthead>
          &ltmeta charset="utf-8">
          &lttitle>My Test Church - login&lt/title>
          &ltmeta name="viewport"
      

      Setze ich dann folgende Abfrage ab:

      GET https://churchtools.meineDomain.de?q=churchhome&func=getMemberList
      

      kommt wieder die Loginseite als Antwort. Scheinbar mache ich hier etwas Grundsätzliches falsch. Könnte mir da ggf. jemand von euch weiterhelfen? Ich bin auch mit PHP nicht ganz so fit, da ich eher in der Java-Welt unterwegs bin...

      Wenn ich mich mit den Zugangsdaten ganz normal im Browser anmelde ist alles perfekt. D.h., die Weboberfläche funktioniert mit den Zugangsdaten.
      Besten Dank vorab und viele Grüße,
      Ralf.

      M 1 Antwort Letzte Antwort Antworten Zitieren 0
      • M
        Marcel @rheydenr
        zuletzt editiert von Marcel

        Hallo Ralf,

        dein erster Request

        POST https://churchtools.meineDomain.de
        Content-Type: application/x-www-form-urlencoded
        q=login&email=function@meineDomain.de&password=verySecret
        

        scheint falsch zu sein. Meines Erachtens müsste das folgendermaßen aussehen ( siehe auch)

        POST https://churchtools.meineDomain.de
        Content-Type: application/x-www-form-urlencoded
        q=login/ajax&func=login&email=function@meineDomain.de&password=verySecret
        

        Besonders wichtig sind hier q=login/ajax&func=login


        Zwecks deinem zweiten Request:

        1. Die Method GET ist nicht erlaubt, der Server wird dir nen 405 Method not allowed liefern.
        2. Vergess nicht die zwei Cookies, die du beim Login-Request erhalten hast, hier mit zu schicken.

        Viele Grüße,

        Marcel

        PS: Nutze aus Sicherheitsgründen besser die Loginmöglichkeit mit Token, anstatt mit Passwort.

        PPS: Schau dir mal die Doku auf https://api.churchtools.de an. Im Speziellen https://api.churchtools.de/class-CTLoginModule.html sollte beim Login helfen. Die ist nicht vollständig und viel muss man sich zusammen reimen, aber mal ne Grundlage 😉

        1 Antwort Letzte Antwort Antworten Zitieren 0
        • R
          rheydenr
          zuletzt editiert von rheydenr

          Hallo Marcel,
          besten Dank für die Info. Irgendwie hatte ich keine Info über die Antwort bekommen und hab das jetzt erst gesehen.
          Inzwischen scheint das mit dem Login zu klappen, ich habe auch ein Token bekommen (hab das Login dahingehend umgestellt). Die nächste Hürde ist, daß ich jedesmal ein "Session expired!" bekomme, wenn ich irgendwas machen will (obwohl ich das gerade erzeugte Token schon mitschicke).
          Hier mal mein Code:

          // Token per Login-Anfrage holen
          POST https://churchtools.meineDomain.de?q=churchhome/ajax&func=getMemberList
          (im Body steht dann noch token=meintoken)
          // als Java-Code sieht das so aus:
          resp1 = Request.Post("https://churchtools.meineDomain.de/?q=churchhome/ajax&func=getMemberList").bodyForm(Form.form().add("token", myToken).add("directtool", "yes").build()).execute().returnContent();
          

          Warum ist das denn falsch? Soll das Token woanders rein? Aber in dem API-Call steht da nichts drin... 😞
          Viele Grüße,
          Ralf.

          M 1 Antwort Letzte Antwort Antworten Zitieren 0
          • M
            Marcel @rheydenr
            zuletzt editiert von

            @rheydenr

            Die CT API funktioniert hier etwas anders. Du musst dich mit dem Token einloggen und die eigentlichen Session-Cookies erstellen. Dafür eignet sich die Methode login with Token.

            Dokumentation siehe https://api.churchtools.de/class-CTLoginModule.html

            Die zwei Cookies, welche du erhältst, musst du dann in den folgenden Requests mitschicken.

            1 Antwort Letzte Antwort Antworten Zitieren 0
            • Erster Beitrag
              Letzter Beitrag