2013-08-30 2 views
0

HI Я новичок в Kohana Я пытаюсь использовать модуль Twitter для входа, я могу получить доступ к информации twitter, но при регистрации я использую регистрацию Auth orm (я расширил мою модель пользователя с помощью Model_Auth_User, иначе он дает проблемы при входе в систему), но при регистрации, поскольку twitter не предоставляет электронную почту (эта проблема, я думаю), проверка не выполняется. Мне нужно знать, могу ли я удалить подтверждение для нужного поля электронной почтыKohana 3.3 Интеграция в интеграцию с Twitter и Auth

Я добавляю свой код для справки

if(!empty($_GET['oauth_verifier']) && Session::instance()->get('oauth_token') && Session::instance()->get('oauth_token_secret')) 
     { 
      $twitteroauth = new TwitterOAuth(Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_KEY'),Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_SECRET'),Session::instance()->get('oauth_token'),Session::instance()->get('oauth_token_secret')); 
      $access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']); 

      $user_info = $twitteroauth->get('account/verify_credentials'); 

      if(isset($user_info->error)) 
      { 
       show_error("Some error has occured."); 
      } 
      else 
      { 
       $model = ORM::factory('user'); 

       $result = $model->where('twitter_id','=', $user_info->id)->find(); 

       if(!$result->id) 
       { 
        $name = explode(' ',$user_info->name); 
        $model = ORM::factory('user'); 
        $data['twitter_id'] = $user_info->id; 
        $data['first_name'] = $name[0]; 
        $data['last_name'] = $name[1]; 
        $data['username'] = $user_info->screen_name;     
        $data['password'] = Auth::instance()->hash_password($user_info->screen_name);    
        $model->values($data); 
        $result = $model->save(); 
        $role = ORM::factory('role')->where('name', '=', 'login')->find(); 
        $model->add('roles', $role); 
       } 


       if($result->id) 
       { 
        //creating new ORM instance to use the result id 

        $model = ORM::factory('user'); 
        $user = $model->find($result->id); 
        Auth::instance()->login($user->username,Auth::instance()->hash_password($user->username)); 
        //Session::instance()->set('id', $model->id); 
        HTTP::redirect('user/dashboard'); 
       } 
       else 
       { 
        HTTP::redirect('/'); 
       } 
      } 
     } 
     else 
     { 
      $twitteroauth = new TwitterOAuth(Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_KEY'),Kohana::$config->load('apiKey.twitter.TWITTER_CONSUMER_SECRET')); 

      $request_token = $twitteroauth->getRequestToken(URL::site()); 
      $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']); 

      Session::instance()->set('oauth_token',$request_token['oauth_token']); 
      Session::instance()->set('oauth_token_secret', $request_token['oauth_token_secret']); 


      HTTP::redirect($url); 
     } 

ответ

0

У меня есть решение для моей проблемы. Я должен был переписать функцию правил при Model_auth_user в Model_user

Ниже мой MOdel_user

<?php defined('SYSPATH') or die('No direct script access.'); 

class Model_User extends Model_Auth_User { 


    public function rules() 
    { 
     return array(
      'username' => array(
       array('not_empty'), 
       array('max_length', array(':value', 32)), 
       array(array($this, 'unique'), array('username', ':value')), 
      ), 
      'password' => array(
       array('not_empty'), 
      ), 
      'email' => array(
       array('email'), 
       array(array($this, 'unique'), array('email', ':value')), 
      ), 
     ); 
    } 


} 

 Смежные вопросы

  • Нет связанных вопросов^_^