API - Probleme mit PHP SDK

178 views
Skip to first unread message

olive...@whagoo.io

unread,
Oct 15, 2015, 5:30:34 AM10/15/15
to immobilienscout24-development
Hallo.

Wir entwickeln eine Website auf der von unserem Kunden alle ImmobilienScout-Objekte aufgelistet werden sollen (die, die veröffentlicht sind).
Wir nutzen dafür das PHP SDK.

Zum Test haben wir eine Testseite eingerichtet.


Dort versuchen wir Zugriff mittels „fullUserSearch“ zu erhalten. Leider funktioniert dies überhaupt nicht.

Unser Code sieht so aus:

<?php
require_once('Immocaster/Sdk.php');
$sImmobilienScout24Key    = 'Dantec-ImmobilienKey';
$sImmobilienScout24Secret = 'hrvBnYCyeFSXB3kW';
$oImmocaster              = Immocaster_Sdk::getInstance('is24',$sImmobilienScout24Key,$sImmobilienScout24Secret);

$meUsername = "Dantec-Immobilien";

$oImmocaster->setDataStorage(array('mysql','dbXXX.db.1und1.com','dbXXXX’,'XXXX','dbXXXX'));
$oImmocaster->setContentResultType('json');
$oImmocaster->enableRequestDebug(); // Zum deaktivieren: disableRequestDebug()
// $oImmocaster->setStrictMode(true);
$oImmocaster->setRequestUrl('live');
//$oImmocaster->authenticateWithoutDB(false); // Oder true
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Immocaster SDK</title>
<style type="text/css">
        textarea { width: 900px; height: 200px; margin: 10px 0; }
#appVerifyButton { padding: 10px; background: #CCC; border: 1px solid #666; display: inline-block; }
#appVerifyInfo { color:#F00; font-weight: bold; font-size:20px;  margin: 10px 0; }
        #appVerifyInfo2 { color:#0F0; font-weight: bold; font-size:20px;  margin: 10px 0; }
        #appVerifyInfo3 { color:#00F; font-weight: bold; font-size:20px;  margin: 10px 0; }
    </style>
</head>

<body>
    <h1>Registrierte Nutzer</h1>
    <?php
    print_r($oImmocaster->getAllApplicationUsers(array('string'=>true)));
    ?>

    <h1>Komplette Ergebnisliste eines Maklers</h1>
    <?php
    $aParameter = array('username'=>$meUsername);
    $res = $oImmocaster->fullUserSearch($aParameter);
    echo '<div class="codebox"><textarea>'.$res.'</textarea></div>';
    ?>


    <h1>Zertifizierung der Applikation durch den Makler</h1>
    <?php
    $sCertifyURL = 'http://www.dantec.de/preview/test.php'; // Komplette URL inkl. Parameter auf der das Script eingebunden wird
    if(isset($_GET['main_registration']) || isset($_GET['state']))
    {
        if(isset($_POST['user'])){ $sUser=$_POST['user']; }
        if(isset($_GET['user'])){ $sUser=$_GET['user']; }
        $aParameter = array('callback_url'=>$sCertifyURL.'?user='.$sUser,'verifyApplication'=>true);
        // Benutzer neu zertifizieren
        $returnAuthentication = $oImmocaster->getAccess($aParameter);
        if ($returnAuthentication === true)
        {
            echo '<div id="appVerifyInfo2">Zertifizierung in der MySQL Datenbank war erfolgreich.</div>';
        }
        elseif (is_array($returnAuthentication) && count($returnAuthentication) > 1)
        {
            echo '<div id="appVerifyInfo3">Zertifizierung war erfolgreich. Hier finden Sie Access Token und Token Secret kommasepariert und url enkodiert.</div>';
            echo '<div class="codebox"><textarea>'.implode(",", $returnAuthentication).'</textarea></div>';
        }
        else
        {
            echo '<div id="appVerifyInfo">Es ist etwas schief gelaufen. Troubleshooting: Benutzer ist bereits in der MySQL Datenbank zertifiziert oder es besteht keine Verbindung zur Datenbank.</div>';

        }
    }
    echo '<form action="'.$sCertifyURL.'?main_registration=1" method="post">';
    echo '<div id="appVerifyButton"><strong>Hinweis: Unter IE9 kann es zu Problemen mit der Zertifizierung kommen.</strong>';
    echo '<br />Benutzername: <input type="text" name="user" value="' . $meUsername . '" /><br />';
    echo '<em>Der Benutzername sollte nach Möglichkeit gesetzt werden. Standardmäßig wird ansonsten "me" genommen. Somit können aber nicht mehrere User parallel in der Datenbank abgelegt werden. Der gewählte Benutzernamen muss der gleiche wie im Formular auf der nächsten Seite sein, damit der Token richtig zugewiesen werden kann.</em><br />';
    echo '<input type="submit" value="Jetzt zertifizieren" /></div></form>';
    ?>
</body>
</html>

Wenn wir die Seite aufrufen, erhalten wir als Ergebnis in der CodeBox:

Die Applikation muss vor der Nutzung dieser Funktion zertifiziert werden, da für diesen Nutzer noch kein Token zertifizert wurde.

Wenn wir sodann die Zertifizierung vornehmen möchten, werden wir auf die ImmoScout Website weitergeleitet (wo wir eigentlich den Zugriff erteilen sollten), erhalten dort aber folgende Fehlermeldung:

Es ist ein Fehler aufgetreten:

Das gelieferte Token ist ungültig, abgelaufen oder wurde bereits verwendet. Bitte wiederholen Sie den Vorgang in der Fremdapplikation.
Bitte überprüfen Sie außerdem die korrekte Schreibweise von API Key und Secret. Übrigens funktionieren die API Zugänge nur für das ausgewiesene System (Sandbox oder Live).


In der Sandbox können wir den Request korrekt absetzen. Nur über das obige Skript nicht.

Wo liegt das Problem? Das Tutorial ist leider auch nicht besonders aussagekräftig. Wir sind für jede Hilfe dankbar.

Fabian Mielke@ImmobilienScout24

unread,
Oct 15, 2015, 5:34:43 AM10/15/15
to immobilienscout24-development
Hi Oliver,

mach mal den Debug Mode aus ;)

MfG Fabian
Reply all
Reply to author
Forward
Message has been deleted
0 new messages