8640b6e0 |
<?php
/**
* A simple example that shows how to use multiple providers, opening provider authentication in a pop-up.
*/
|
ee2d7d73 |
use MVC\Classe\Dumper;
|
8640b6e0 |
require CONFIG_PATH . DIRECTORY_SEPARATOR . "authentification-config-example.php";
try {
$hybridauth = new Hybridauth\Hybridauth($config);
$storage = new Hybridauth\Storage\Session();
$error = false;
//
// Event 1: User clicked SIGN-IN link
//
if (isset($url_params['provider'])) {
// Validate provider exists in the $config
if (in_array($url_params['provider'], $hybridauth->getProviders())) {
// Store the provider for the callback event
|
ee2d7d73 |
$storage->set('provider', $url_params['provider']);
|
8640b6e0 |
} else {
|
ee2d7d73 |
$error = $url_params['provider'];
|
8640b6e0 |
}
}
//
// Event 2: User clicked LOGOUT link
//
if (isset($url_params['logout'])) {
if (in_array($url_params['logout'], $hybridauth->getProviders())) {
// Disconnect the adapter
$adapter = $hybridauth->getAdapter($url_params['logout']);
$adapter->disconnect();
} else {
$error = $url_params['logout'];
}
}
//
// Handle invalid provider errors
//
|
ee2d7d73 |
if ($error !== false) {
|
8640b6e0 |
error_log('HybridAuth Error: Provider ' . json_encode($error) . ' not found or not enabled in $config');
// Close the pop-up window
echo "
<script>
window.opener.location.reload();
window.close();
</script>";
exit;
}
//
// Event 3: Provider returns via CALLBACK
//
|
ee2d7d73 |
if ($url_params['provider'] = $storage->get('provider')) {
|
8640b6e0 |
|
ee2d7d73 |
$hybridauth->authenticate($url_params['provider']);
die('OK!');
|
8640b6e0 |
$storage->set('provider', null);
// Retrieve the provider record
|
ee2d7d73 |
$adapter = $hybridauth->getAdapter($url_params['provider']);
Dumper::dump($adapter->getUserProfile());
Dumper::dump($adapter->getAccessToken());
\MVC\Classe\Session::start();
\MVC\Classe\Session::setUserProfile($adapter->getUserProfile());
\MVC\Classe\Session::setToken($adapter->getAccessToken());
|
8640b6e0 |
// Close pop-up window
|
ee2d7d73 |
echo <<<EOD
|
8640b6e0 |
<script>
|
ee2d7d73 |
window.opener.location.assign('compte');
self.close();
</script>
EOD;
|
8640b6e0 |
}
} catch (Exception $e) {
error_log($e->getMessage());
echo $e->getMessage();
}
|