Zum Inhalt der Seite
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($acc, false, "/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($_GET, unserialize($_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 "" . htmlent($userdaten["username"]) . "" 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();
?>