/** * Loginza TokenUrl */ public function executeAuth(sfWebRequest $request) { $this->forward404Unless($token = $request->getParameter('token')); $loginza = new LoginzaAPI(); $response = $loginza->getAuthInfo($token); $this->forward404Unless(isset($response->identity)); $identity = IdentityTable::getInstance()->findOneByIdentity($response->identity); if ($identity) { $this->getUser()->signin($identity->getUser(), true); return $this->redirect('homepage'); } else { $this->getUser()->setAttribute('loginza.identity', array('identity' => $response->identity, 'provider' => $response->provider, 'email_address' => isset($response->email) ? $response->email : '', 'username' => isset($response->nickname) ? $response->nickname : '', 'first_name' => isset($response->name->first_name) ? $response->name->first_name : '', 'last_name' => isset($response->name->last_name) ? $response->name->last_name : ''), 'loginza'); return $this->redirect('loginza_signup'); } }
public function do_answer_from_server() { global $forum_user, $lang_common, $lang_fancy_login_loginza, $forum_config; if (!empty($_POST['token'])) { $widget_id = intval($forum_config['o_fancy_login_loginza_widget_id'], 10); $secret_key = forum_trim($forum_config['o_fancy_login_loginza_secret_key']); // Получаем профиль авторизованного пользователя $LoginzaAPI = new LoginzaAPI(); $UserProfile = $LoginzaAPI->getAuthInfo($_POST['token'], $widget_id, md5($_POST['token'] . $secret_key)); $prev_url = isset($_GET['return_url']) ? forum_trim($_GET['return_url']) : ''; // проверка на ошибки if (is_object($UserProfile) && !empty($UserProfile->error_type)) { message(sprintf($lang_fancy_login_loginza['Error server'], forum_htmlencode($UserProfile->error_message))); } else { if (!empty($UserProfile) && $this->check_profile($UserProfile)) { $this->process($UserProfile, $prev_url); } } } // Show ERROR message($lang_fancy_login_loginza['Error loginza']); }
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Пример авторизации через Loginza API</title> <!-- Insert Loginza Widget JavaScript Code --> <script src="http://loginza.ru/js/widget.js" type="text/javascript"></script> </head> <body> <?php // проверка переданного токена if (!empty($_POST['token'])) { // получаем профиль авторизованного пользователя $UserProfile = $LoginzaAPI->getAuthInfo($_POST['token']); // проверка на ошибки if (!empty($UserProfile->error_type)) { // есть ошибки, выводим их // в рабочем примере данные ошибки не следует выводить пользователю, так как они несут информационный характер только для разработчика echo $UserProfile->error_type . ": " . $UserProfile->error_message; } elseif (empty($UserProfile)) { // прочие ошибки echo 'Temporary error.'; } else { // ошибок нет запоминаем пользователя как авторизованного $_SESSION['loginza']['is_auth'] = 1; // запоминаем профиль пользователя в сессию или создаем локальную учетную запись пользователя в БД $_SESSION['loginza']['profile'] = $UserProfile; } } elseif (isset($_GET['quit'])) {