Advertisement
Guest User

Untitled

a guest
Jan 31st, 2017
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 23.42 KB | None | 0 0
  1. <?php
  2.  
  3. class Socialist_Controller extends Controller {
  4.  
  5.   public function gp($request)
  6.   {
  7.     // youtube.com authorization
  8.     $app_settings = App::settings();
  9.     $api = $app_settings['socialist']['gp'];
  10.  
  11.     if( isset($_GET['error']) && $_GET['error'] == 'access_denied' )
  12.     {
  13.       Http::redirect('/');
  14.     }
  15.  
  16.     if( isset($_GET['from_my_price']) )
  17.     {
  18.       $_SESSION['from_my_price'] = true;
  19.     }
  20.  
  21.     /*
  22.      * You can acquire an OAuth 2.0 client ID and client secret from the
  23.      * Google Developers Console <https://console.developers.google.com/>
  24.      * For more information about using OAuth 2.0 to access Google APIs, please see:
  25.      * <https://developers.google.com/youtube/v3/guides/authentication>
  26.      * Please ensure that you have enabled the YouTube Data API for your project.
  27.      */
  28.     $OAUTH2_CLIENT_ID = $api['client_id'];
  29.     $OAUTH2_CLIENT_SECRET = $api['client_secret'];
  30.  
  31.     $client = new Google_Client();
  32.     $client->setClientId($OAUTH2_CLIENT_ID);
  33.     $client->setClientSecret($OAUTH2_CLIENT_SECRET);
  34.     $client->setScopes(array(
  35.       'https://www.googleapis.com/auth/youtube',
  36.       'https://www.googleapis.com/auth/youtubepartner',
  37.       'https://www.googleapis.com/auth/youtube.readonly',
  38.       'https://www.googleapis.com/auth/youtube.force-ssl',
  39.       'https://www.googleapis.com/auth/userinfo.profile'));
  40.     $redirect = filter_var(\Http::getHostUrl() . \Urls::get(array('app' => 'socialist', 'alias' => 'via-gp')),
  41.       FILTER_SANITIZE_URL);
  42.     $client->setRedirectUri($redirect);
  43.  
  44.     // Define an object that will be used to make all API requests.
  45.     $youtube = new Google_Service_YouTube($client);
  46.  
  47.     if (isset($_GET['code'])) {
  48.       if (strval($_SESSION['state']) !== strval($_GET['state'])) {
  49.         exit('The session state did not match.');
  50.       }
  51.  
  52.       $client->authenticate($_GET['code']);
  53.       $_SESSION['token'] = $client->getAccessToken();
  54.       header('Location: ' . $redirect);
  55.     }
  56.  
  57.     if (isset($_SESSION['token'])) {
  58.       $client->setAccessToken($_SESSION['token']);
  59.     }
  60.  
  61.     // Check to ensure that the access token was successfully acquired.
  62.     if( $client->getAccessToken() ) {
  63.       try {
  64.         unset($_SESSION['token']);
  65.  
  66.         // Call the channels.list method to retrieve information about the
  67.         // currently authenticated user's channel.
  68.         $channelsResponse = $youtube->channels->listChannels('snippet,contentDetails,statistics,brandingSettings', array(
  69.           'mine' => 'true',
  70.         ));
  71.  
  72.         $chsh = array_shift($channelsResponse['items']);
  73.         $channel_summary = array(
  74.           'id' => $chsh['id'],
  75.           'title' => $chsh['modelData']['snippet']['title'],
  76.           'description' => $chsh['modelData']['snippet']['description'],
  77.           'custom_url' => $chsh['modelData']['snippet']['customUrl'],
  78.           'image' => $chsh['modelData']['snippet']['thumbnails']['medium']['url'],
  79.           'banner_image' => $chsh['modelData']['brandingSettings']['image']['bannerTabletExtraHdImageUrl'],
  80.           'statistics' => $chsh['modelData']['statistics']
  81.         );
  82.  
  83.         // This is the place to create a user account
  84.         $chemail = $channel_summary['id'] . '@youtube.com';
  85.         if( !\Users\get('id') && !R::count('users', "`email` = ? AND `viasocial` = 1", array($chemail)) && !\Users\get('id') )
  86.         {
  87.           $r = R::dispense('users');
  88.           $r->name = $channel_summary['title'];
  89.           $r->email = $chemail;
  90.           $r->password = '';
  91.  
  92.           $r->verified = 1;
  93.           $r->viasocial = true;
  94.           $r->ban = 0;
  95.  
  96.           // avatar image
  97.           $file_info = pathinfo($channel_summary['image']);
  98.           $avatars_media_dir = '/static/uploads/avatars/';
  99.           $avatars_dir = BASE_DIR . $avatars_media_dir;
  100.           $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
  101.           file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['image'], true));
  102.           $image = new ImageResize();
  103.           $image->load($avatars_dir.$new_fname);
  104.           $image->resizeToWidth(236);
  105.           $image->save($avatars_dir.$new_fname);
  106.           $r->avatar = $new_fname;
  107.           $uid = R::store($r);
  108.         } else
  109.         {
  110.           $uid = \Users\get('id');
  111.         }
  112.  
  113.         // and, create a channel record for him
  114.         $channel_record = R::findOne('channels', "`channel_id` = ?", array($channel_summary['id']));
  115.         if( !$channel_record )
  116.         {
  117.           // create
  118.           $channel_record = R::dispense('channels');
  119.         } else
  120.         {
  121.           // update
  122.           $channel_record = R::load('channels', $channel_record['id']);
  123.         }
  124.  
  125.         $channel_record->channel_id = $channel_summary['id'];
  126.         $channel_record->title = $channel_summary['title'];
  127.         $channel_record->description = $channel_summary['description'];
  128.         $channel_record->custom_url = $channel_summary['custom_url'];
  129.  
  130.         // avatar image
  131.         if( !$channel_record->image )
  132.         {
  133.           $file_info = pathinfo($channel_summary['image']);
  134.           $avatars_media_dir = '/static/uploads/avatars/';
  135.           $avatars_dir = BASE_DIR . $avatars_media_dir;
  136.           $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
  137.           file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['image'], true));
  138.           $image = new ImageResize();
  139.           $image->load($avatars_dir.$new_fname);
  140.           $image->resizeToWidth(236);
  141.           $image->save($avatars_dir.$new_fname);
  142.           $channel_record->image = $new_fname;
  143.         }
  144.  
  145.         // banner image
  146.         if( !$channel_record->banner_image )
  147.         {
  148.           $file_info = pathinfo($channel_summary['banner_image']);
  149.           $avatars_media_dir = '/static/uploads/banners/';
  150.           $avatars_dir = BASE_DIR . $avatars_media_dir;
  151.           $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
  152.           file_put_contents($avatars_dir.$new_fname, Http::request($channel_summary['banner_image'], true));
  153.           $channel_record->banner_image = $new_fname;
  154.         }
  155.  
  156.         $channel_record->view_count = $channel_summary['statistics']['viewCount'];
  157.         $channel_record->comment_count = $channel_summary['statistics']['commentCount'];
  158.         $channel_record->subscriber_count = $channel_summary['statistics']['subscriberCount'];
  159.         $channel_record->hidden_subscriber_count = $channel_summary['statistics']['hiddenSubscriberCount'];
  160.         $channel_record->video_count = $channel_summary['statistics']['videoCount'];
  161.         $channel_record->sharedUsersList[] = R::load('users', $uid);
  162.         $channel_record->last_update = TimeManager::time();
  163.         $chid = R::store($channel_record);
  164.  
  165.         if( \Users\get('id') )
  166.         {
  167.           if( isset($_SESSION['from_my_price']) )
  168.           {
  169.             unset($_SESSION['from_my_price']);
  170.             Http::redirect(\Urls::get(array('app' => 'catalog', 'method' => 'my_price')));
  171.           } else
  172.           {
  173.             Http::redirect('/');
  174.           }
  175.         }
  176.  
  177.         // login now
  178.         $_POST['email'] = $chemail;
  179.         $_POST['password'] = '';
  180.  
  181.         $users_controller = BASE_DIR . '/apps/users/controller.php';
  182.         require $users_controller;
  183.         $uc = new Users_Controller();
  184.         define('FORCE_SOCIAL_LOGIN', true);
  185.         $uc->do_signin(array());
  186.         exit();
  187.  
  188.       } catch (Google_Service_Exception $e) {
  189.         unset($_SESSION['token']);
  190.         Http::redirect(ACTIVE_URI);
  191.         exit(sprintf('<p>A service error occurred: <code>%s</code></p>',
  192.           htmlspecialchars($e->getMessage())));
  193.       } catch (Google_Exception $e) {
  194.         unset($_SESSION['token']);
  195.         Http::redirect(ACTIVE_URI);
  196.         exit(sprintf('<p>An client error occurred: <code>%s</code></p>',
  197.           htmlspecialchars($e->getMessage())));
  198.       }
  199.  
  200.       $_SESSION['token'] = $client->getAccessToken();
  201.     } else {
  202.       unset($_SESSION['token']);
  203.       $state = mt_rand();
  204.       $client->setState($state);
  205.       $_SESSION['state'] = $state;
  206.  
  207.       $authUrl = $client->createAuthUrl();
  208.  
  209.       Http::redirect($authUrl);
  210.     }
  211.  
  212.     exit('test');
  213.   }
  214.  
  215.   public function vk_go($request)
  216.   {
  217.     if( \Users\get('id') )
  218.     {
  219.       Http::redirect('/');
  220.     }
  221.  
  222.     Http::redirect( \Socialist\vk_login_url() );
  223.   }
  224.  
  225.   public function vk($request)
  226.   {
  227.     // vk.com authorization
  228.     $app_settings = App::settings();
  229.     $api = $app_settings['socialist']['vk'];
  230.  
  231.     if( \Users\get('id') )
  232.     {
  233.       Http::redirect('/');
  234.     }
  235.  
  236.     if(!empty($_GET['code']))
  237.     {
  238.       // we got the code
  239.       $vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=".$api['id']."&client_secret=".$api['secret']."&code=".$_GET['code']."&redirect_uri=" . urlencode(\Http::getHostUrl() . \Urls::get(array('app' => 'socialist', 'alias' => 'via-vk-handler')));
  240.       $resp = Http::request($vk_grand_url,true);
  241.       $data = json_decode($resp, true);
  242.  
  243.       $vk_access_token = $data['access_token'];
  244.       $vk_uid =  $data['user_id'];
  245.  
  246.       $res = Http::request("https://api.vk.com/method/users.get?uids=".$vk_uid."&access_token=".$vk_access_token."&fields=uid,first_name,last_name,screen_name,sex,bdate,city,photo_200_orig",true);
  247.       $data = json_decode($res, true);
  248.       $user_info = $data['response'][0];
  249.  
  250.       if( R::count('users', "`email` = ? AND `viasocial` = 1", array($user_info['uid'].'@vk.com')) )
  251.       {
  252.         // already exists, login
  253.         $_POST['email'] = $user_info['uid'].'@vk.com';
  254.         $_POST['password'] = '';
  255.  
  256.         $users_controller = BASE_DIR . '/apps/users/controller.php';
  257.         require $users_controller;
  258.         $uc = new Users_Controller();
  259.         define('FORCE_SOCIAL_LOGIN', true);
  260.         $uc->do_signin(array());
  261.         exit();
  262.       } else
  263.       {
  264.         // not exists, signup
  265.         $r = R::dispense('users');
  266.         $r->name = $user_info['first_name'].' '.$user_info['last_name'];
  267.         $r->email = $user_info['uid'].'@vk.com';
  268.         $r->password = '';
  269.  
  270.         $r->verified = 1;
  271.         $r->viasocial = true;
  272.         $r->ban = 0;
  273.  
  274.         $file_info = pathinfo($user_info['photo_200_orig']);
  275.         $avatars_media_dir = '/static/uploads/avatars/';
  276.         $avatars_dir = BASE_DIR . $avatars_media_dir;
  277.         $new_fname = FileSystem::getUniqueFilename($file_info['basename'], $avatars_dir);
  278.         file_put_contents($avatars_dir.$new_fname, Http::request($user_info['photo_200_orig'], true));
  279.         $image = new ImageResize();
  280.         $image->load($avatars_dir.$new_fname);
  281.         $image->resizeToWidth(236);
  282.         $image->save($avatars_dir.$new_fname);
  283.  
  284.         $r->avatar = $new_fname;
  285.         R::store($r);
  286.  
  287.         // login now
  288.         $_POST['email'] = $user_info['uid'].'@vk.com';
  289.         $_POST['password'] = '';
  290.  
  291.         $users_controller = BASE_DIR . '/apps/users/controller.php';
  292.         require $users_controller;
  293.         $uc = new Users_Controller();
  294.         define('FORCE_SOCIAL_LOGIN', true);
  295.         $uc->do_signin(array());
  296.         exit();
  297.       }
  298.     } else
  299.     {
  300.       redirect('/');
  301.     }
  302.   }
  303.  
  304.   public function fb($request)
  305.   {
  306.     // facebook.com authorization
  307.     $app_settings = App::settings();
  308.     $api = $app_settings['socialist']['fb'];
  309.  
  310.     if(!empty($_GET['code']))
  311.     {
  312.       $params = array(
  313.         'client_id'     => $api['id'],
  314.         'redirect_uri'  => SELF_URL,
  315.         'client_secret' => $api['secret'],
  316.         'code'          => $_GET['code']
  317.       );
  318.  
  319.       $url = 'https://graph.facebook.com/oauth/access_token';
  320.       $tokenInfo = null;
  321.       $rqwst = Http::request($url . '?' . http_build_query($params),true);
  322.       parse_str($rqwst, $tokenInfo);
  323.       if (count($tokenInfo) > 0 && isset($tokenInfo['access_token'])) {
  324.           $params = array('access_token' => $tokenInfo['access_token']);
  325.           $userInfo = json_decode(Http::request('https://graph.facebook.com/me' . '?fields=location,id,birthday,email,first_name,gender,last_name,link,name,age_range&' . urldecode(http_build_query($params)),true), true);
  326.           if (isset($userInfo['id'])) {
  327.               $userInfo = $userInfo;
  328.               $result = true;
  329.           }
  330.       }
  331.       $user_info = $userInfo;
  332.       $user_picture = 'https://graph.facebook.com/'.$user_info['id'].'/picture?type=large&ext=.jpg';
  333.  
  334.       if (R::count('users', 'email = ?', array($user_info['id'].'@facebook.com'))) {
  335.           // already exists, login
  336.           $_POST['email'] = $user_info['id'].'@facebook.com';
  337.           $_POST['password'] = base64_encode(($user_info['id'] + 100500));
  338.  
  339.           $this->load('users/controller');
  340.           $this->connections->controller['users']->login($request);
  341.           exit();
  342.       } else {
  343.           // not found, signup
  344.           $newUser = R::dispense('users');
  345.           $newUser->is_activated = 1;
  346.           $newUser->is_admin = 0;
  347.           $newUser->is_banned = 0;
  348.           $newUser->login = $user_info['id'].'@facebook.com';
  349.  
  350.           $newUser->password = password_hash(base64_encode(($user_info['id'] + 100500)), PASSWORD_DEFAULT);
  351.           $newUser->name = $user_info['first_name'].' '.$user_info['last_name'];
  352.           $gender = $user_info['gender'];
  353.           $newUser->gender = trim(FilterMaster::filterAll($gender));
  354.  
  355.           $age = 0;
  356.           if (isset($user_info['birthday']) && $user_info['birthday'] != '') {
  357.               $birth_date = strtotime($user_info['birthday']);
  358.               $age = (int)date('Y',TimeManager::time()) - date('Y',$birth_date);
  359.           }
  360.           $newUser->age = $age;
  361.  
  362.           $city = '';
  363.           if(isset($user_info['location']) && isset($user_info['location']['name']) && $user_info['location']['name'] != '') {
  364.               $city = $user_info['location']['name'];
  365.           }
  366.           $newUser->city = trim(FilterMaster::filterAll($city));
  367.  
  368.           $file_info = pathinfo($user_picture);
  369.           $avatars_media_dir = '/static/uploads/avatars/';
  370.           $avatars_dir = BASE_DIR.$avatars_media_dir;
  371.           $new_fname = FileSystem::getUniqueFilename($file_info['basename'],$avatars_dir);
  372.           file_put_contents($avatars_dir.$new_fname,Http::request($user_picture,true));
  373.           $image = new ImageResize();
  374.           $image->load($avatars_dir.$new_fname);
  375.           $image->resizeToWidth(207);
  376.           $image->save($avatars_dir.$new_fname);
  377.           $newUser->avatar = $new_fname;
  378.  
  379.           $newUser->email = $user_info['id'].'@facebook.com';
  380.           $newUser->money = 0.00;
  381.           $newUser->socials = json_encode(array('facebook'=>$user_info['id']));
  382.           $newUser->profilesettings = json_encode(array());
  383.           $newUser->account_type = 0;
  384.           $id = R::store($newUser);
  385.  
  386.           // login now
  387.           $_POST['email'] = $user_info['id'].'@facebook.com';
  388.           $_POST['password'] = base64_encode(($user_info['id'] + 100500));
  389.  
  390.           $this->load('users/controller');
  391.           $this->connections->controller['users']->login($request);
  392.           exit();
  393.       }
  394.     } else
  395.     {
  396.       redirect('/');
  397.     }
  398.   }
  399.  
  400.   public function tw($request)
  401.   {
  402.     // twitter.com authorization
  403.     $app_settings = App::settings();
  404.     $api = $app_settings['socialist']['tw'];
  405.  
  406.     define('CONSUMER_KEY', $api['key']);
  407.     define('CONSUMER_SECRET', $api['secret']);
  408.     define('REQUEST_TOKEN_URL', 'https://api.twitter.com/oauth/request_token');
  409.     define('AUTHORIZE_URL', 'https://api.twitter.com/oauth/authorize');
  410.     define('ACCESS_TOKEN_URL', 'https://api.twitter.com/oauth/access_token');
  411.     define('ACCOUNT_DATA_URL', 'https://api.twitter.com/1.1/users/show.json');
  412.     define('CALLBACK_URL', SELF_URL);
  413.     define('URL_SEPARATOR', '&');
  414.  
  415.     if( isset($_GET['auth_redirect']) )
  416.     {
  417.       $this->tw_authorize();
  418.     } else
  419.     {
  420.       if( !empty($_GET['oauth_token']) && !empty($_GET['oauth_verifier']) )
  421.       {
  422.         $oauth_nonce = md5(uniqid(rand(), true));
  423.         $oauth_timestamp = time();
  424.         $oauth_token = $_GET['oauth_token'];
  425.         $oauth_verifier = $_GET['oauth_verifier'];
  426.  
  427.         $oauth_base_text = "GET&";
  428.         $oauth_base_text .= urlencode(ACCESS_TOKEN_URL)."&";
  429.  
  430.         $params = array(
  431.             'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
  432.             'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
  433.             'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
  434.             'oauth_token=' . $oauth_token . URL_SEPARATOR,
  435.             'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
  436.             'oauth_verifier=' . $oauth_verifier . URL_SEPARATOR,
  437.             'oauth_version=1.0'
  438.         );
  439.  
  440.         $key = CONSUMER_SECRET . URL_SEPARATOR;
  441.         $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCESS_TOKEN_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));
  442.         $oauth_signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));
  443.  
  444.         $params = array(
  445.             'oauth_nonce=' . $oauth_nonce,
  446.             'oauth_signature_method=HMAC-SHA1',
  447.             'oauth_timestamp=' . $oauth_timestamp,
  448.             'oauth_consumer_key=' . CONSUMER_KEY,
  449.             'oauth_token=' . urlencode($oauth_token),
  450.             'oauth_verifier=' . urlencode($oauth_verifier),
  451.             'oauth_signature=' . urlencode($oauth_signature),
  452.             'oauth_version=1.0'
  453.         );
  454.         $url = ACCESS_TOKEN_URL . '?' . implode('&', $params);
  455.         $response = Http::request($url,true);
  456.         parse_str($response, $response);
  457.  
  458.         $oauth_nonce = md5(uniqid(rand(), true));
  459.         $oauth_timestamp = time();
  460.  
  461.         $oauth_token = $response['oauth_token'];
  462.         $oauth_token_secret = $response['oauth_token_secret'];
  463.         $screen_name = $response['screen_name'];
  464.  
  465.         $params = array(
  466.             'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
  467.             'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
  468.             'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
  469.             'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
  470.             'oauth_token=' . $oauth_token . URL_SEPARATOR,
  471.             'oauth_version=1.0' . URL_SEPARATOR,
  472.             'screen_name=' . $screen_name
  473.         );
  474.         $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(ACCOUNT_DATA_URL) . URL_SEPARATOR . implode('', array_map('urlencode', $params));
  475.  
  476.         $key = CONSUMER_SECRET . '&' . $oauth_token_secret;
  477.         $signature = base64_encode(hash_hmac("sha1", $oauth_base_text, $key, true));
  478.  
  479.         $params = array(
  480.             'oauth_consumer_key=' . CONSUMER_KEY,
  481.             'oauth_nonce=' . $oauth_nonce,
  482.             'oauth_signature=' . urlencode($signature),
  483.             'oauth_signature_method=HMAC-SHA1',
  484.             'oauth_timestamp=' . $oauth_timestamp,
  485.             'oauth_token=' . urlencode($oauth_token),
  486.             'oauth_version=1.0',
  487.             'screen_name=' . $screen_name
  488.         );
  489.  
  490.         $url = ACCOUNT_DATA_URL . '?' . implode(URL_SEPARATOR, $params);
  491.  
  492.         $response = Http::request($url,true);
  493.  
  494.         // fuh... now into json
  495.         $user_data = json_decode($response,true);
  496.         $user_info = $user_data;
  497.  
  498.         if( R::count('users','email = ?',array($user_info['id_str'].'@twitter.com')) )
  499.         {
  500.           // account isset, login
  501.           $_POST['email'] = $user_info['id_str'].'@twitter.com';
  502.           $_POST['password'] = base64_encode(($user_info['id_str'] + 100500));
  503.  
  504.           $this->load('users/controller');
  505.           $this->connections->controller['users']->login($request);
  506.         } else
  507.         {
  508.           // new user, signup
  509.           // http://pbs.twimg.com/profile_images/id_str/Rtg92MO0_normal.png
  510.           $newUser = R::dispense('users');
  511.           $newUser->is_activated = 1;
  512.           $newUser->is_admin = 0;
  513.           $newUser->is_banned = 0;
  514.           $newUser->login = $user_info['id_str'].'@twitter.com';
  515.           $newUser->password = password_hash(base64_encode(($user_info['id_str'] + 100500)), PASSWORD_DEFAULT);
  516.           $newUser->name = $user_info['name'];
  517.           $gender = 'male';
  518.           $newUser->gender = trim(FilterMaster::filterAll($gender));
  519.           $newUser->age = (int)trim(FilterMaster::filterAll(20));
  520.           $newUser->city = trim(FilterMaster::filterAll($user_info['location']));
  521.           $newUser->email = $user_info['id_str'].'@twitter.com';
  522.           $newUser->money = 0.00;
  523.  
  524.           $user_picture = str_replace('_normal','',$user_info['profile_image_url']);
  525.           $file_info = pathinfo($user_picture);
  526.           $avatars_media_dir = '/static/uploads/avatars/';
  527.           $avatars_dir = BASE_DIR.$avatars_media_dir;
  528.           $new_fname = FileSystem::getUniqueFilename($file_info['basename'],$avatars_dir);
  529.           file_put_contents($avatars_dir.$new_fname,Http::request($user_picture,true));
  530.           $image = new ImageResize();
  531.           $image->load($avatars_dir.$new_fname);
  532.           $image->resizeToWidth(207);
  533.           $image->save($avatars_dir.$new_fname);
  534.           $newUser->avatar = $new_fname;
  535.  
  536.           $newUser->socials = json_encode(array('twitter'=>$user_info['screen_name']));
  537.           $newUser->profilesettings = json_encode(array());
  538.           $newUser->account_type = 0;
  539.           $id = R::store($newUser);
  540.  
  541.           // login
  542.           $_POST['email'] = $user_info['id_str'].'@twitter.com';
  543.           $_POST['password'] = base64_encode(($user_info['id_str'] + 100500));
  544.  
  545.           $this->load('users/controller');
  546.           $this->connections->controller['users']->login($request);
  547.         }
  548.       } else
  549.       {
  550.         redirect('/');
  551.       }
  552.     }
  553.   }
  554.  
  555.  
  556.   public function tw_authorize() {
  557.       $oauth_nonce = md5(uniqid(rand(), true));
  558.       $oauth_timestamp = time();
  559.  
  560.       $params = array(
  561.           'oauth_callback=' . urlencode(CALLBACK_URL) . URL_SEPARATOR,
  562.           'oauth_consumer_key=' . CONSUMER_KEY . URL_SEPARATOR,
  563.           'oauth_nonce=' . $oauth_nonce . URL_SEPARATOR,
  564.           'oauth_signature_method=HMAC-SHA1' . URL_SEPARATOR,
  565.           'oauth_timestamp=' . $oauth_timestamp . URL_SEPARATOR,
  566.           'oauth_version=1.0'
  567.       );
  568.       $oauth_base_text = implode('', array_map('urlencode', $params));
  569.       $key = CONSUMER_SECRET . URL_SEPARATOR;
  570.       $oauth_base_text = 'GET' . URL_SEPARATOR . urlencode(REQUEST_TOKEN_URL) . URL_SEPARATOR . $oauth_base_text;
  571.       $oauth_signature = base64_encode(hash_hmac('sha1', $oauth_base_text, $key, true));
  572.  
  573.       //params
  574.       $params = array(
  575.           URL_SEPARATOR . 'oauth_consumer_key=' . CONSUMER_KEY,
  576.           'oauth_nonce=' . $oauth_nonce,
  577.           'oauth_signature=' . urlencode($oauth_signature),
  578.           'oauth_signature_method=HMAC-SHA1',
  579.           'oauth_timestamp=' . $oauth_timestamp,
  580.           'oauth_version=1.0'
  581.       );
  582.  
  583.       // склеиваем параметры для формирования url
  584.       $url = REQUEST_TOKEN_URL . '?oauth_callback=' . urlencode(CALLBACK_URL) . implode('&', $params);
  585.  
  586.       // Отправляем GET запрос по сформированному url
  587.       $response = Http::request($url,true);
  588.  
  589.       // Парсим ответ
  590.       parse_str($response, $response);
  591.  
  592.       // записываем ответ в переменные
  593.       $oauth_token = $response['oauth_token'];
  594.       $oauth_token_secret = $response['oauth_token_secret'];
  595.  
  596.       //в итоге сама ссылка
  597.       $link = AUTHORIZE_URL . '?oauth_token=' . $oauth_token;
  598.  
  599.       redirect( $link );
  600.   }
  601.  
  602. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement