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

    API Authentifizierung-Problem

    ChurchTools Schnittstellen
    5
    8
    1.1k
    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.
    • I
      immi
      zuletzt editiert von

      Hallo,

      ich habe eine Problem mit der ChurchTools Authentifizierung. Ich habe mich für die Implementierung der Authentifizierung an die Demo auf Github gehalten.

      Das ganze funktioniert eigentlich auch wunderbar nur habe ich Probleme, wenn in einem Passwort das Sonderzeichen "&" einegsetzt wird, deklariert ChurchTools die Login-Daten als falsch (obwohl sie korrekt sind). Sobald ich das Sonderzeichen "&" aus dem Passwort entferne, nimmt ChurchTools die Login-Daten wieder an.

      Meine Vermutung ist, dass es ein Problem mit dem URL-En bzw. Decoding gibt. Denn die PHP-Funktion http_build_query baut einen String zusammen, der via POST Request an die ChurchTools API geschickt wird. Sowohl die Emailadresse als auch das Passwort bekommen einen URL-Encoding. Testweie hatte ich auche einmal das URL-Decoding für das Passwort deaktiviert, nur führt das natürlich ebenfalls zu einem Fehler, weil das "&" im Passwort dann dazu führt, dass quasi ein weitere Parameter im POST Request eingeleitet wird, obwohl er eigentlich Bestandteil des Passwortes ist. Ich vermute das entweder es auf der ChurchTools Seite ein Problem bei URL-Decoding des Passwortes gibt, wenn ein "&" enthalten ist oder das an meiner PHP-Installation nicht stimmt.

      Kann dieses Problem irgendjemand bestätigen bzw. könnt Ihr eine API-Authentifizierung druchführen, wo das Passwort ein "&" enthält?

      Grüße Immanuel

      1 Antwort Letzte Antwort Antworten Zitieren 1
      • moenschM
        moensch
        zuletzt editiert von

        Ich habe dasselbe Problem. Das gilt aber nicht nur für "&", sondern auch für andere Sonderzeichen wie "?", welche für URL's verwendet werden.

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

          @immi Könntest du deinen Code auf GitHub stellen? Dann können wir uns einfacher anschauen was da schief läuft.

          1 Antwort Letzte Antwort Antworten Zitieren 0
          • I
            immi
            zuletzt editiert von

            @davidschilling also der Code zur Authentifizierung entspricht nahezu 1:1 dem was jmrauen dazu auf GitHub veröffentlicht hat (siehe hier). Der relevante Teil ist ja die Funktion sendRequest() und die stimmt 100% mit der GitHub Version überein.

            @moensch welche PHP Version nutzt eucher ChurchTools?

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

              Das Problem kommt daher, dass die Parameter als URL Parameter geschickt werden.

              Man kann diese auch als Request Body im JSON Format schicken, dann gibt es das Problem nicht.

              ProSongP 1 Antwort Letzte Antwort Antworten Zitieren 0
              • ProSongP
                ProSong @davidschilling
                zuletzt editiert von

                @davidschilling könntest du da ein genaueres Beispiel geben für das vorliegende Problem? Ich verstehe nicht ganz, was du mit "Request Body" in dem Fall meinst.
                Wie müsste sendRequest() ungefähr aussehen?

                Gruss Simon

                B 1 Antwort Letzte Antwort Antworten Zitieren 0
                • B
                  bwl21 @ProSong
                  zuletzt editiert von bwl21

                  @prosong Ich bin grad auch an dem Thema ...

                  https://github.com/bwl21/CT-API-Tools/tree/develop

                  Ich weiß, ist der n+1 Versuch, das zu generalisieren ...

                  Vielleicht ist das interessant für dich. Auf jeden Fall kannst du da Code abschauen.

                  Das ist ein Fork - die Meriten für den code gebühren daher fodinabor.

                  1 Antwort Letzte Antwort Antworten Zitieren 0
                  • ProSongP
                    ProSong
                    zuletzt editiert von

                    @davidschilling Ich habe versucht, das Passwort in JSON zu senden. Sobald aber bestimmte Sonderzeichen enthalten sind, erhalte ich "Passwort ist falsch" zurück.

                    $url = 'https://xxx.church.tools?q=login/ajax&func=getUserLoginToken';
                    
                    $data = array(
                    	'email' => $email,
                    	'password' => $password,
                    	'directtool' => 'yes'
                    );
                    
                    $options = array(
                    	'http' => array(
                    		'method'  => 	"POST",
                    		'header' => "Content-type: application/json"
                            	."\r\naccept: application/json",
                    		'content' => json_encode($data)
                    	)
                    );
                    
                    $context  = stream_context_create($options);
                    $result = file_get_contents($url, false, $context);
                    
                    $data = json_decode($result);
                    
                    1 Antwort Letzte Antwort Antworten Zitieren 0
                    • Erster Beitrag
                      Letzter Beitrag