Zum Inhalt der Seite
  • NETZWERK

Animexx OAuth Beispiel



<?
require_once("/animexx/html/functions/global.php");
require_once(
_GLOBAL_PATH_ "include/zendframework2.inc.php");

user()->requireLogin();


$GLOBALS["animexx_ckey"] = "######";
$GLOBALS["animexx_csecret"] = ""######";

$GLOBALS["animexx_config"] = array(
    
'callbackUrl' => (isHTTPS() ? "https" "http") . '://' $_SERVER["HTTP_HOST"] . '/mitglieder/einstellungen-animexx-oauth.php?',
    
'siteUrl' => 'https://ws.animexx.de/oauth',
    
'requestTokenUrl' => 'https://ws.animexx.de/oauth/request_token',
    
'accessTokenUrl' => 'https://ws.animexx.de/oauth/access_token',
    
'authorizeUrl' => 'https://ws.animexx.de/oauth/authorize',
    
'consumerKey' => $GLOBALS["animexx_ckey"],
    
'consumerSecret' => $GLOBALS["animexx_csecret"]
);



/**
 * @dbsafe
 * @param int|array $acc
 * @param bool $post
 * @param string $url
 * @return null|ZendOAuth\Client
 */
function animexx_ws_get_client($acc$post false$url "")
{
    
$token = new ZendOAuth\Token\Access();
    
$token->setToken($acc["token"])->setTokenSecret($acc["token_secret"]);
    
$adapter = new \Zend\Http\Client\Adapter\Curl();

    
$consumer $token->getHttpClient($GLOBALS["animexx_config"]);
    
$consumer->setAdapter($adapter);

    
$consumer->setUri("https://ws.animexx.de/json" $url ".json");
    
$consumer->setMethod($post Zend\Http\Request::METHOD_POST Zend\Http\Request::METHOD_GET);

    return 
$consumer;
}


/**
 * @param array $acc
 * @return null|array
 */
function animexx_ws_mitgliederIch($acc) {
    
$client animexx_ws_get_client($accfalse"/mitglieder/ich/");
    
$client->send();

    
/** @var Zend\Http\Response $response */
    
try {
        
$response $client->getResponse();
        
$ret      Zend\Json\Json::decode($response->getBody());
        return (array)
$ret->return;
    } catch (
Exception $e) {
        
debug_vardump($e);
        return 
null;
    }
}


if (
submit_check("start_anbindung")) {
    try {
        
$consumer = new ZendOAuth\Consumer($GLOBALS["animexx_config"]);
        
$adapter = new Zend\Http\Client\Adapter\Curl();
        
$client $consumer->getHttpClient();
        
/** @var Zend\Http\Client $client */
        
$client->setAdapter($adapter);
        
$token $consumer->getRequestToken();
        
$_SESSION['ANIMEXX_REQUEST_TOKEN'] = serialize($token);
        
$auth_url                          $consumer->getRedirectUrl();
        
redirect($auth_url);
    } catch (
Exception $e) {
        
debug_vardump($e);
        echo 
"Es ist ein Fehler aufgetreten.";
    }
}


layout()->setResponsive(true);
layout()->setTitle("Animexx");
layout()->printHeader();

Ueberschrift("<b>Animexx Loop-Anbindung</b>");
eing_ruecklink("einstellungen.php""Zurück");
echo 
"<br><br>";



if (isset(
$_REQUEST["oauth_token"])) {
    try {
        
$consumer = new ZendOAuth\Consumer($GLOBALS["animexx_config"]);
        
$adapter = new Zend\Http\Client\Adapter\Curl();
        
$client $consumer->getHttpClient();
        
/** @var Zend\Http\Client $client */
        
$client->setAdapter($adapter);
        
$token    $consumer->getAccessToken($_GETunserialize($_SESSION['ANIMEXX_REQUEST_TOKEN']));

        
$oauth_token $token->getParam("oauth_token");
        
$oauth_token_secret $token->getParam("oauth_token_secret");

        unset(
$_SESSION['ANIMEXX_REQUEST_TOKEN']);

        
$userdaten animexx_ws_mitgliederIch(array(
            
"token" => $oauth_token,
            
"token_secret" => $oauth_token_secret,
        ));

        
var_dump($userdaten);

        
sql_query("REPLACE INTO animexx_userdaten.animexx_oauth_loop (animexx_id, loop_username, loop_id, token, token_secret, datum) VALUES (" user() . ", '" addslashes($userdaten["username"]) . "', '" addslashes($userdaten["id"]) . "', '" addslashes($oauth_token) . "', '" addslashes($oauth_token_secret) . "', NOW())""userdaten");

        echo 
"<div class='ergebnis_ok'><p>Der Account &quot;" htmlent($userdaten["username"]) . "&quot; wurde registriert.</p></div><br>";
    } catch (
Exception $e) {
        
debug_vardump($e);
        echo 
"<div class='ergebnis_error'><p>Ein Fehler ist aufgetreten.</p></div><br>";
    }
}
if (
submit_check("delete")) {
    
sql_query("DELETE FROM animexx_userdaten.animexx_oauth_loop WHERE animexx_id=" user(), "userdaten");
    echo 
"<div class='ergebnis_ok'><p>Die Anbindung wurde aufgehoben.</p></div><br>";

}




$autorisiert false;

$q sql_query("SELECT * FROM animexx_userdaten.animexx_oauth_loop WHERE animexx_id=" user(), "userdaten");
if (
sql_num_rows($q) == 1) {
    
$acc sql_fetch_assoc($q);

    try {
        
$userdata animexx_ws_mitgliederIch($acc);
        
debug_vardump($userdata);
        echo 
"<br>";

        echo 
"<span class='pics_but_accept16'></span> <b>Status:</b> Animexx-Account " $acc["loop_username"] . " angebunden.";
        
$autorisiert true;

    } catch (
Exception $e) {
        echo 
"<span class='pics_but_cancel16'></span> <b>Status:</b> Animexx-Account " $acc["loop_username"] . " nicht mehr angebunden.";
    }
} else {
    echo 
"<span class='pics_but_cancel16'></span> <b>Status:</b> Noch kein Animexx-Account angebunden.";
}



if (!
$autorisiert) {

    
?><br><br><br>
    <form method="POST" action="einstellungen-animexx-oauth.php">
        <table class="blau align_center padding2 width600">
            <caption>Animexx-Account anbinden</caption>
            <tr></tr>
            <tr><td>
                    <b>Hinweise:</b><br>
                    - Durch eine Anbindung kann ##### Teile des Animexx-Accounts einsehen sowie ENS verschicken.
                </td></tr>
            <tr><td style="text-align: center;" class="header">
                    <input type="submit" name="<?=submit_name("start_anbindung")?>" value="Anbinden" class="greybutton button-save">
                </td></tr>
        </table>
    </form>

<?
} else {
    echo 
"<br><br><br><br><br><a style='float: right;' class='button button-del' href='einstellungen-animexx-oauth.php?" submit_name("delete") . "=1' onClick='return confirm(\"Die Anbindung wirklich auflösen?\");'>Anbindung auflösen</a>";
}

echo 
"<br><br>";



layout()->printFooter();
?>


Zurück