Yii 1.1: twitter

One simple Twitter oAuth extension for Yii framework
7 followers

Not seen any simple twitter oAuth extension here so just using Will Wharton's extension

Yii component for twitter authentication using twitteroauth library

Installation

  • Download and extract extension files to the directory protected/extensions
  • In your protected/config/main.php, add the following:
'components'=>array(
    //----
      'twitter' => array(
                'class' => 'ext.yiitwitteroauth.YiiTwitter',
                'consumer_key' => 'YOUR TWITEER KEY',
                'consumer_secret' => 'YOUR TWITTER SECRET',
                'callback' => 'YOUR CALLBACK URL',
            ),
        //-----
        ),

Usage

public function actionIndex()
     {
     $twitter = Yii::app()->twitter->getTwitter();  
     $request_token = $twitter->getRequestToken();
 
         //set some session info
         Yii::app()->session['oauth_token'] = $token =           $request_token['oauth_token'];
         Yii::app()->session['oauth_token_secret'] = $request_token['oauth_token_secret'];
 
        if($twitter->http_code == 200){
            //get twitter connect url
            $url = $twitter->getAuthorizeURL($token);
            //send them
            $this->redirect($url);
        }else{
            //error here
            $this->redirect(Yii::app()->homeUrl);
        }
 
 
    }

This action will redirect you to the twitter app authentcation url. If the user authenticate your application,you will redirect back to your callback url

In your callback url action

public function actionTwitterCallBack() {   
        /* If the oauth_token is old redirect to the connect page. */
        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 */
        $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
 
        /* 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
            $twuser= $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"));
 
        } else {
            /* Save HTTP status for error dialog on connnect page.*/
            //header('Location: /clearsessions.php');
            $this->redirect(Yii::app()->homeUrl);
        }
    }

Resources

Total 2 comments

#14726 report it
tabai at 2013/09/06 05:07am
getting error API v1

Hi savoo

You have to update you twitteroauth.php file from https://github.com/abraham/twitteroauth/tree/master/twitteroauth for the new 1.1 API

Bye

#14043 report it
savoo at 2013/07/15 01:38am
getting error

with this extension i'm getting error . **stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [message] => The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview. [code] => 68 ) ) ) ** please help

Leave a comment

Please to leave your comment.

Create extension