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

    API Authorisierung

    ChurchTools Schnittstellen
    5
    5
    297
    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.
    • S
      simongolda
      zuletzt editiert von

      Hallo Leute,

      ich baue aktuell eine kleine Seite auf der man zukünftig die Kalendereinträge sehen soll.
      Allerdings habe ich ein bisschen Probleme mit der API, wenn ich den API Call /api/login mache kommt nur:

      {
        "data": {
          "status": "success",
          "message": "login.success",
          "personId": 1,
          "location": "?=churchhome"
        }
      }
      

      Eigentlich würde Ich einen Token erwarten mit dem ich dann die nächsten Calls machen kann (die auch nicht gehen)

      Es wäre cool wenn mir jemand vielleicht sagen kann woran das liegt 🙂

      Danke Euch 🙂
      Simon

      S davidschillingD 2 Antworten Letzte Antwort Antworten Zitieren 0
      • S
        Simon2 @simongolda
        zuletzt editiert von Simon2

        @simongolda
        Hi,

        ich habe das (in plain-Java) einem Cookiehandler überlassen.

        final CookieManager cookieManager = new CookieManager();
        CookieHandler.setDefault(cookieManager);
            
        final URL loginUrl = new URL("https://xxx.church.tools/api/login");
        final HttpURLConnection loginConnection = (HttpURLConnection) loginUrl.openConnection();
        loginConnection.setRequestMethod("POST");
        loginConnection.setDoOutput(true);
        loginConnection.setRequestProperty("Accept", "application/json");
        loginConnection.setRequestProperty("Content-Type", "application/json");
        
        final String data = "{\r\n    \"username\" : \"Name\",\r\n    \"password\" : \"PASSWORT\"\r\n}";
        final byte[] out = data.getBytes(StandardCharsets.UTF_8);
        final OutputStream stream = loginConnection.getOutputStream();
        stream.write(out);
        System.out.println(loginConnection.getResponseCode() + " " + loginConnection.getResponseMessage());
        

        Der Cookiehandler behält die Credentials auch über verschiedene Connections hinweg (man kann also die loginConnection auch wieder schließen).

        1 Antwort Letzte Antwort Antworten Zitieren 0
        • DumbergerLD
          DumbergerL
          zuletzt editiert von

          Hallo @simongolda,

          im ersten Schritt musst du mit POST /api/login dieses Datenobjekt abrufen, wie du es ja schon machst.

          Jetzt kannst du mit der "personId" den Login-Token abrufen:

          GET /api/persons/{personId}/logintoken

          Mit dem Login-Token kannst du dann alle zukünftigen Requests autorisieren.

          T 1 Antwort Letzte Antwort Antworten Zitieren 0
          • T
            thommyb ChurchToolsMitarbeiter @DumbergerL
            zuletzt editiert von

            @simongolda Deine Intuition ist richtig. So sieht der Code in Python aus:

            # Base url for all API access
            root_url = "https://xxx.church.tools"
            base_url = root_url + "/api"
            
            # Create session with credentials
            ct_session = requests.Session()
            credentials = {"username": userid, "password": password}
            
            response = ct_session.post(base_url + "/login", json = credentials)
            

            Danach können alle weitere request an dieselbe session geschickt werden. Python sendet die entsprechenden Tokens unter der Decke hin und her.

            1 Antwort Letzte Antwort Antworten Zitieren 0
            • davidschillingD
              davidschilling ChurchToolsMitarbeiter @simongolda
              zuletzt editiert von

              @simongolda Die Antwort von @thommyb ist gut. ChurchTools arbeitet mit Session Cookies. Diese sollten verwendet werden wenn man mit der Api arbeitet. Für den ersten Login kann entweder das Login Token oder der Login Endpoint verwendet werden.

              Wenn man die Session Cookies nicht verwendet muss bei jedem Aufruf ein neuer Login gemacht werden was sehr langsam ist.

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