Example #1
0
 public function actionTwlogin()
 {
     $redirectUrl = '/';
     if (isset(Yii::app()->session['twredirect']) && !empty(Yii::app()->session['twredirect'])) {
         $redirectUrl = Yii::app()->session['twredirect'];
         unset(Yii::app()->session['twredirect']);
     }
     if (isset($_REQUEST['oauth_token']) && Yii::app()->session['oauth_token'] !== $_REQUEST['oauth_token']) {
         Yii::app()->session['oauth_status'] = 'oldtoken';
     }
     /* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
     $twitter = Yii::app()->twitter->getTwitterTokened(Yii::app()->session['oauth_token'], Yii::app()->session['oauth_token_secret']);
     /* Request access tokens from twitter */
     if (!isset($_REQUEST['oauth_verifier'])) {
         $this->redirect($redirectUrl);
         die;
     }
     //  $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
     $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier'], $_REQUEST['oauth_token']);
     /* Save the access tokens. Normally these would be saved in a database for future use. */
     Yii::app()->session['access_token'] = $access_token;
     /* Remove no longer needed request tokens */
     unset(Yii::app()->session['oauth_token']);
     unset(Yii::app()->session['oauth_token_secret']);
     if (200 == $twitter->http_code) {
         /* The user has been verified and the access tokens can be saved for future use */
         Yii::app()->session['status'] = 'verified';
         //get an access twitter object
         $twitter = Yii::app()->twitter->getTwitterTokened($access_token['oauth_token'], $access_token['oauth_token_secret']);
         //get user details
         $accountInfo = $twitter->get("account/verify_credentials");
         //get friends ids
         // $friends= $twitter->get("friends/ids");
         //get followers ids
         //    $followers= $twitter->get("followers/ids");
         //tweet
         //           $result=$twitter->post('statuses/update', array('status' => "Tweet message"));
         // если пользователь не найден
         if (empty($accountInfo)) {
             $this->redirect($redirectUrl);
             die;
         }
         $login = '******' . $accountInfo->id;
         $password = crc32($accountInfo->id);
         // пробуем авторизоваться и войти
         $authenticate = $this->enterSite($login, $password);
         if (!Yii::app()->user->isGuest) {
             // вошли
             $model = Yii::app()->user->getModel();
             $this->redirect($redirectUrl);
             die;
         }
         if (!$authenticate) {
             Yii::app()->session['registerAccountInfo'] = array('username' => $login, 'password' => $password, 'interests' => '', 'avatarUrl' => $accountInfo->profile_image_url, 'token' => $access_token['oauth_token'], 'social' => 'twitter');
             if (!empty($accountInfo->profile_image_url)) {
                 $img = str_replace('_normal', '_bigger', $accountInfo->profile_image_url);
             } else {
                 $img = null;
             }
             $model = new FormRegisterSocial();
             $model->username = $login;
             $model->password = $password;
             $model->photo = $img;
             $model->fullname = !empty($accountInfo->name) ? $accountInfo->name : $login;
             $model->email = null;
             $model->avatar_enc = !empty($model->photo) ? base64_encode(Controller::getRemoteContents($model->photo)) : '';
             $model->from_soc_network = true;
             $model->soc_network_name = 'twitter';
             // если подхваченные данные валидны - регистрируем
             if ($model->validate()) {
                 $soucePassword = $model->password;
                 $model->activkey = UsersModule::encrypting(microtime() . $model->password);
                 $model->password = UsersModule::encrypting($model->password);
                 $model->superuser = 0;
                 $model->status = User::STATUS_ACTIVE;
                 if ($model->save()) {
                     // удаляем регистрационные данные из сессии
                     Yii::app()->session['registerAccountInfo'] = null;
                     $model->chickPhoto();
                     $this->enterSite($login, $soucePassword);
                 }
                 $this->redirect($redirectUrl);
                 Yii::app()->end();
             } else {
                 $this->addFlashMessage($model->errors, 'error');
                 $model->clearErrors();
             }
             $this->redirect($redirectUrl);
             Yii::app()->end();
             /* $this->render('registersocial', array(
                    'model' => $model,
                    'login' => $login,
                    'filetoken' => sha1(time() . rand()),
                ));*/
         }
     } else {
         /* Save HTTP status for error dialog on connnect page.*/
         //header('Location: /clearsessions.php');
         //  $this->redirect(Yii::app()->homeUrl);
         $this->redirect($redirectUrl);
         Yii::app()->end();
     }
 }