Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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;
     }
 }
Ejemplo n.º 5
0
 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;
     }
 }
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
 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;
     }
 }
Ejemplo n.º 9
0
 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;
 }