public function onSloginCheck() { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $input = JFactory::getApplication()->input; $code = $input->get('code', null, 'STRING'); $returnRequest = new SloginRequest(); if ($code) { // get access_token for google API $redirect = urlencode(JURI::base() . '?option=com_slogin&task=check&plugin=google'); $scope = urlencode('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'); $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'grant_type=authorization_code', 'code=' . $code, 'redirect_uri=' . $redirect, 'scope=' . $scope); $params = implode('&', $params); $url = 'https://accounts.google.com/o/oauth2/token'; $request = json_decode($controller->open_http($url, true, $params)); if (empty($request)) { echo 'Error - empty access tocken'; exit; } //Get user info // // id The value of this field is an immutable identifier for the logged-in user // email The email address of the logged in user // verified_email A flag that indicates whether or not Google has been able to verify the email address. // name The full name of the logged in user // given_name The first name of the logged in user // family_name The last name of the logged in user // picture The URL to the user's profile picture. If the user has no public profile, this field is not included. // locale The user's registered locale. If the user has no public profile, this field is not included. // timezone the default timezone of the logged in user // gender the gender of the logged in user (other|female|male) $url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $request->access_token; $request = json_decode($controller->open_http($url)); if (empty($request)) { echo 'Error - empty user data'; exit; } else { if (!empty($request->error)) { echo '<pre>'; var_dump($request->error); echo '</pre>'; exit; } } $returnRequest->first_name = $request->given_name; $returnRequest->last_name = $request->family_name; $returnRequest->email = $request->email; $returnRequest->id = $request->id; $returnRequest->real_name = $request->given_name . ' ' . $request->family_name; $returnRequest->sex = $request->gender; $returnRequest->display_name = $request->name; $returnRequest->all_request = $request; return $returnRequest; } else { echo 'Error - empty code'; exit; } }
public function getToken($code) { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $redirect = urlencode(JURI::base() . '?option=com_slogin&task=check&plugin=facebook'); //подключение к API $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'code=' . $code, 'redirect_uri=' . $redirect); $params = implode('&', $params); $url = 'https://graph.facebook.com/oauth/access_token?' . $params; $data = $controller->open_http($url); parse_str($data, $data_array); if (empty($data_array['access_token'])) { echo 'Error - empty access tocken'; exit; } return $data_array; }
public function getToken($code) { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $redirect = urlencode(JURI::base() . '?option=com_slogin&task=check&plugin=instagram'); //подключение к API $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'grant_type=authorization_code', 'redirect_uri=' . $redirect, 'code=' . $code); $params = implode('&', $params); $url = 'https://api.instagram.com/oauth/access_token'; $response = $controller->open_http($url, true, $params); $data = json_decode($response); if (empty($data->access_token)) { echo 'Error - empty access tocken'; echo '<pre>'; var_dump($response); echo '</pre>'; exit; } return $data; }
public function onSloginCheck() { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $input = JFactory::getApplication()->input; $app = JFactory::getApplication(); $request = null; $app->setUserState('com_slogin.return_url', $input->getString('return', '')); $app->setUserState('com_slogin.action.data', $input->getString('action', '')); $token = $input->get('token', null, 'STRING'); $returnRequest = new SloginRequest(); if ($token) { // get access_token from API $params = array('token=' . $token, 'host=' . JURI::base(true)); $params = implode('&', $params); $url = 'http://ulogin.ru/token.php?' . $params; $request = $controller->open_http($url); $request = json_decode($request); if (!isset($request->uid)) { echo 'Error - empty user data'; exit; } $returnRequest->first_name = isset($request->first_name) ? $request->first_name : ''; $returnRequest->last_name = isset($request->last_name) ? $request->last_name : ''; $returnRequest->email = isset($request->email) ? $request->email : ''; $returnRequest->id = 'ulogin_' . $request->network . '_' . $request->uid; $returnRequest->real_name = isset($request->nickname) ? $request->nickname : $request->first_name; $returnRequest->sex = isset($request->sex) ? $request->sex : 0; $returnRequest->display_name = isset($request->nickname) ? $request->nickname : $request->first_name; $returnRequest->birthday = isset($request->bdate) ? $request->bdate : ''; $returnRequest->network = isset($request->network) ? $request->network : ''; $returnRequest->all_request = $request; $app = JFactory::getApplication(); $app->setUserState('com_slogin.popup', 'none'); return $returnRequest; } else { echo 'Error - empty tocken'; exit; } }
public function onSloginCheck() { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $input = JFactory::getApplication()->input; $code = $input->get('code', null, 'STRING'); $returnRequest = new SloginRequest(); if ($code) { // get access_token for google API $uri = JRoute::_('index.php?option=com_slogin&task=check&plugin=live'); $uri = JString::substr($uri, 1); $redirect = urlencode(JURI::base() . $uri); $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'grant_type=authorization_code', 'code=' . $code, 'redirect_uri=' . $redirect); $params = implode('&', $params); $url = 'https://login.live.com/oauth20_token.srf'; $request = json_decode($controller->open_http($url, true, $params)); if (empty($request)) { echo 'Error - empty access tocken'; exit; } if (!empty($request->error)) { echo '<pre>'; $request->error; echo '</pre>'; if (!empty($request->error_description)) { echo '<pre>'; $request->error_description; echo '</pre>'; } exit; } $url = 'https://apis.live.net/v5.0/me?access_token=' . $request->access_token; $request = json_decode($controller->open_http($url)); if (empty($request)) { echo 'Error - empty user data'; exit; } else { if (!empty($request->error)) { echo 'Error - ' . $request->error; exit; } } /* object(stdClass)#534 (9) { ["id"]=> string(16) "d5f1256f7b5322c7" ["name"]=> string(37) "Аркадий Седельников" ["first_name"]=> string(14) "Аркадий" ["last_name"]=> string(22) "Седельников" ["link"]=> string(25) "https://profile.live.com/" ["gender"]=> NULL ["emails"]=> object(stdClass)#533 (4) { ["preferred"]=> string(22) "*****@*****.**" ["account"]=> string(22) "*****@*****.**" ["personal"]=> NULL ["business"]=> NULL } ["locale"]=> string(5) "ru_RU" ["updated_time"]=> string(24) "2013-02-09T04:50:26+0000" } */ if (!empty($request->emails->preferred)) { $email = $request->emails->preferred; } else { if (!empty($request->emails->account)) { $email = $request->emails->account; } else { if (!empty($request->emails->personal)) { $email = $request->emails->personal; } else { if (!empty($request->emails->business)) { $email = $request->emails->business; } else { $email = ''; } } } } $returnRequest->first_name = $request->first_name; $returnRequest->last_name = $request->last_name; $returnRequest->email = $email; $returnRequest->id = $request->id; $returnRequest->real_name = $request->name; $returnRequest->sex = $request->gender; $returnRequest->display_name = $request->name; $returnRequest->all_request = $request; return $returnRequest; } else { echo 'Error - empty code'; exit; } }
public function onAfterSloginLoginUser($instance, $provider, $info) { if (!$provider) { return; } $profileLink = $origimage = $new_image = ''; $controller = new SLoginController(); //максимальная ширина и высота для генерации изображения $max_h = $this->params->get('imgparam', 50); $max_w = $this->params->get('imgparam', 50); // $data Объект с параметрами для подготовки к записи в БД $data = new stdclass(); $data->user_provider = $provider; $data->up = 1; $data->user_id = $instance->id; $data->user_photo = ''; switch ($provider) { //google case 'google': $max_h = false; //google foto fix if (isset($info->picture)) { $origimage = $info->picture; $new_image = $provider . '_' . $info->id . '.jpg'; $profileLink = $info->link; } break; //linkedin //linkedin case 'linkedin': if ($info->pictureUrl) { $origimage = $info->pictureUrl; $new_image = $provider . '_' . $info->id . '.jpg'; $profileLink = 'http://www.linkedin.com/profile/view?id=' . $info->id; } break; //vkontakte //vkontakte case 'vkontakte': $ResponseUrl = 'https://api.vk.com/method/getProfiles?uid=' . $info->uid . '&fields=photo_medium'; $request = json_decode($controller->open_http($ResponseUrl))->response[0]; if (!empty($request->error)) { return; } if (substr($request->photo_medium, -12, 10000) != 'camera_b.gif') { $origimage = $request->photo_medium; $new_image = $provider . '_' . $info->uid . '.jpg'; } $profileLink = 'http://vk.com/id' . $info->uid; break; //facebook //facebook case 'facebook': $foto_url = 'http://graph.facebook.com/' . $info->id . '/picture?type=square&redirect=false'; $request_foto = json_decode($controller->open_http($foto_url)); if (!empty($request_foto->error)) { return; } if ($request_foto->data->is_silhouette === false) { //если аватар загружен if ($request_foto->data->url) { $origimage = $request_foto->data->url; } else { $origimage = false; } $new_image = $provider . '_' . $info->id . '.jpg'; } $profileLink = $info->link; break; //twitter //twitter case 'twitter': if ($info->default_profile_image != 1) { $origimage = $info->profile_image_url; $new_image = $provider . '_' . $info->id . '.jpg'; $profileLink = 'https://twitter.com/' . $info->screen_name; } break; //odnoklassniki //odnoklassniki case 'odnoklassniki': if (substr($info->pic_1, -14, 10000) != 'stub_50x50.gif') { $origimage = $info->pic_1; $new_image = $provider . '_' . $info->uid . '.jpg'; } $profileLink = 'http://www.odnoklassniki.ru/profile/' . $info->uid; break; //mail //mail case 'mail': if ($info->has_pic == '1') { $origimage = $info->pic_50; $new_image = $provider . '_' . $info->uid . '.jpg'; } $profileLink = $info->link; break; //yandex не дает аватарки, либо нужны жесткие права доступа //yandex не дает аватарки, либо нужны жесткие права доступа case 'yandex': return; break; //если не поддерживается провайдер то фото нет //если не поддерживается провайдер то фото нет default: return; break; } if ($this->getStatusUpdate($provider, $data->user_id, $origimage, $new_image, $max_w, $max_h)) { $data->user_photo = $new_image; $data->profile = $profileLink; $this->addPhotoSql($data); } }
private function facebookGetData($user, $provider, $info) { $controller = new SLoginController(); $data = new StdClass(); $data->user_id = $user->id; $data->slogin_id = $info->id; $data->provider = $provider; $data->social_profile_link = $info->link; if ($info->gender == 'male') { $data->gender = 1; } elseif ($info->gender == 'female') { $data->gender = 2; } else { $data->gender = 0; } $data->f_name = $info->first_name; $data->l_name = $info->last_name; $data->email = $info->email; $this->getGeoInfo($data); $foto_url = 'http://graph.facebook.com/' . $info->id . '/picture?type=large&redirect=false'; $request_foto = json_decode($controller->open_http($foto_url)); $data->picture = ''; if (empty($request_foto->error)) { if ($request_foto->data->is_silhouette === false) { //если аватар загружен if ($request_foto->data->url) { $data->picture = $request_foto->data->url; } } } return $data; }
public function onSloginCheck() { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $input = JFactory::getApplication()->input; $request = null; $code = $input->get('code', null, 'STRING'); $returnRequest = new SloginRequest(); if ($code) { $redirect = urlencode(JURI::base() . '?option=com_slogin&task=check&plugin=odnoklassniki'); $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'grant_type=authorization_code', 'code=' . $code, 'redirect_uri=' . $redirect); $params = implode('&', $params); $url = 'http://api.odnoklassniki.ru/oauth/token.do'; $request = json_decode($controller->open_http($url, true, $params)); if (empty($request)) { echo 'Error - empty access tocken'; die; } else { if (!empty($request->error)) { echo '<h3>token.do</h3>'; echo '<p>' . $request->error . '</p>'; echo '<p>' . $request->error_description . '</p>'; die; } } /* Объект $request содержит следующие поля: uid - уникальный номер пользователя first_name - имя пользователя last_name - фамилия пользователя birthday - дата рождения пользователя gender - пол пользователя pic_1 - маленькое фото pic_2 - большое фото */ $request_params = array('application_key=' . $this->params->get('public_key'), 'access_token=' . $request->access_token, 'method=users.getCurrentUser', 'sig=' . md5('application_key=' . $this->params->get('public_key') . 'method=users.getCurrentUser' . md5($request->access_token . $this->params->get('password')))); $params = implode('&', $request_params); $url = 'http://api.odnoklassniki.ru/fb.do?' . $params; $request = json_decode($controller->open_http($url)); if (empty($request)) { echo 'Error - empty user data'; die; } else { if (!empty($request->error_code)) { echo '<h3>fb.do</h3>'; echo '<p>' . $request->error_data . '</p>'; echo '<p>' . $request->error_msg . '</p>'; die; } } if (!empty($request->error)) { echo 'Error - ' . $request->error; exit; } $returnRequest->first_name = $request->first_name; $returnRequest->last_name = $request->last_name; $returnRequest->email = $request->email; $returnRequest->id = $request->uid; $returnRequest->real_name = $request->first_name . ' ' . $request->last_name; $returnRequest->sex = $request->gender; $returnRequest->display_name = $request->name; $returnRequest->all_request = $request; return $returnRequest; } else { echo 'Error - empty code'; exit; } }
public function getToken($code) { require_once JPATH_BASE . '/components/com_slogin/controller.php'; $controller = new SLoginController(); $redirect = urlencode(JURI::base() . '?option=com_slogin&task=check&plugin=vkontakte'); //подключение к API $params = array('client_id=' . $this->params->get('id'), 'client_secret=' . $this->params->get('password'), 'code=' . $code, 'redirect_uri=' . $redirect); $params = implode('&', $params); $url = 'https://oauth.vk.com/access_token?' . $params; $data = json_decode($controller->open_http($url)); return $data; }