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

    Funktioniert die alte API nicht mehr?

    ChurchTools Schnittstellen
    2
    2
    231
    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.
    • lucasgirodL
      lucasgirod
      zuletzt editiert von

      Seit dem letzten Update funktioniert das untenstehende Script - welches auf dem Beispiel in diesem Forum basiert - nicht mehr.

      Der Login funktioniert, beim zweiten API-Call erhalte ich ein "Session expired!"
      Anfragen über die neue RESTful-API funktionieren tadellos.

      Was mache ich falsch?

      $cookies = array();
      
      // Login with email and password
      $url = 'https://spm.church.tools/index.php?q=login/ajax';
      $data = array('func' => 'login', 
                    'email' => 'website', 
                    'password' => '*******'); 
      $result = sendRequest($url, $data);
      if ($result->status == "fail") {
        echo $result->data;
        return;
      }
      echo "Login erfolgreich!<br/>";
      
      
      // List groups
      $url = 'https://spm.church.tools/index.php?q=churchdb/ajax';
      $data = array('func' => 'getMasterData', 
                    'email' => 'website', 
                    'password' => '*******'); 
      $result = sendRequest($url, $data);
      
      print_r($result);
      
      
      function getCookies() {
        global $cookies;
        $res = "";
        foreach ($cookies as $key => $cookie) {
          $res .= "$key=$cookie; ";
        }
        return $res;
      }
      
      function saveCookies($r) {
        global $cookies;
        foreach ($r as $hdr) {
          if (preg_match('/^Set-Cookie:\s*([^;]+)/', $hdr, $matches)) {
            parse_str($matches[1], $tmp);
            $cookies += $tmp;
          }
        }
      }
      
      function sendRequest($url, $data) {
        $options = array(
          'http'=>array(
            'header' => "Cookie: ".getCookies() . "\r\nContent-type: application/x-www-form-urlencoded\r\n",
            'method' => 'POST',
            'content' => http_build_query($data),
          )
        );
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        $obj = json_decode($result);
        if ($obj->status == 'error') {
          echo "There is an error: $obj->message";
          exit;
        }
        saveCookies($http_response_header);
        return $obj;
      }
      
      
      1 Antwort Letzte Antwort Antworten Zitieren 0
      • davidschillingD
        davidschilling ChurchToolsMitarbeiter
        zuletzt editiert von

        ich vermute es liegt an dem fehlenden CSRF-Token.
        Hier genauer beschrieben: https://intern.church.tools/?q=churchwiki#WikiView/filterWikicategory_id:0/doc:API-CSRF/follow_redirect:true/

        Das ist aber schon seit einigen Versionen so.

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