You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
Advertise
Best Hosting Service
Categories
- CMS Tools (1)
- Coding (6)
- CSS (13)
- Fonts (16)
- Freelance (16)
- Graphics (881)
- HTML (6)
- Icons (21)
- Illustrator (1)
- Inspiration (45)
- Interviews (8)
- IPhone (1)
- Java Script (4)
- Jquery (1)
- Logos (7)
- Marketing (5)
- Megento (1)
- Mobile Apps Development (2)
- News Letter (1)
- Photoshop (6)
- Resources (4)
- Responsive Design (2)
- Tutorials (4)
- Twitter (6)
- UI Design (1)
- UX Design (3)
- Wallpapers (7)
- Web Design (45)
- WordPress (23)
- Work (9)
Tags
3D
Artworks
brush
clients
Create
CSS
CSS3
design
designs
developers
Download free fonts
Fonts
Free
free fonts
Free Icons
Freelance
freelance websites
Graphics
Icon
Icons
Illustration
Illustrations
Illustrator
Inspiration
Inspirational
Interview
Javascript
Logos
Photo
photos
Photoshop
portfolio
Poster design
Texture
themes
tutorial
tutorials
Twitter
Typography
UI design
Vector
Web Design
Websites
WordPress
Wordpress Themes



How to Authenticate Users With Twitter OAuth
Beginning August 16th, Twitter will no longer support the basic authentication protocol for its platform. That means the only way to authenticate users will be through a Twitter application. In this tutorial, I’ll show you how to use Twitter as your one-click authentication system, just as we did with Facebook.
Step 1: Setting Up The Application
We’ll first need to set up a new Twitter application.
http://localhost.com/twitter_login.php(http://localhost/won’t be accepted because it doesn’t have a domain name).Now, you’ll see the screen as shown below.
We will be using the Consumer key and Consumer secret values shortly.
Now that this is done, let’s download a library. As we will be coding with PHP, it seems the best one is twitteroauth; but if you’re using another language, you’ll find other good libraries here.
Find the
twitteroauthdirectory inside the zip file, and extract it to your application’s folder.Finally, since we’re using Twitter to authenticate users, we’ll need a database table to store those users. Here’s a quick example of what we will be doing.
Notice the
oauth_tokenandoauth_secretfields. Twitter’s OAuth requirestokenand atoken_secretvalues to authenticate the users, so that’s why we’re including those. With that, we are done with the setup!Step 2: Registering Users
In this step we, will be doing three things:
Requesting authorization
The OAuth workflow starts by generating a URL for the request; the user is redirected to that URL and is asked for authorization. After granting it, the application redirects back to our server with two tokens in the URL parameters, which are required for the authentication.
Let’s begin by including the library and starting a session handler.
require("twitteroauth/twitteroauth.php"); session_start();After that, let’s create a new TwitterOAuth instance, giving it the consumer key and consumer secret that Twitter gave us when we created the application. Then, we’ll request the authentication tokens, saving them to the session, and redirect the user to Twitter for authorization.
// The TwitterOAuth instance $twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET'); // Requesting authentication tokens, the parameter is the URL we will be redirected to $request_token = $twitteroauth->getRequestToken('http://localhost.com/twitter_oauth.php'); // Saving them into the session $_SESSION['oauth_token'] = $request_token['oauth_token']; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; // If everything goes well.. if($twitteroauth->http_code==200){ // Let's generate the URL and redirect $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']); header('Location: '. $url); } else { // It's a bad idea to kill the script, but we've got to know when there's an error. die('Something wrong happened.'); }Save it as
twitter_login.php, go tohttp://localhost.com/twitter_login.phpor whatever your local host name is. If everything went correctly, you should be redirected to twitter.com, and you should see something like this.Click allow, and you will be redirected to
http://localhost.com/twitter_oauth.php— since we set this URL as a parameter in thegetRequestTokenstatement. We haven’t created that file, so it should throw an error. Create that file, and then include the library and start a session, just like we did in the first file.After that, we will need three things:
So, the first thing to do in this script is validate this data and redirect if one of these variables is empty.
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){ // We've got everything we need } else { // Something's missing, go back to square 1 header('Location: twitter_login.php'); }Now, if everything is set, inside the conditional we will be creating the TwitterOAuth instance, but with the tokens we just got as third and fourth parameters; after that, we will be getting the access token, which is an array. That token is the one we will be saving to the database. Finally, we’ll do a quick test to see if everything works out.
// TwitterOAuth instance, with two new parameters we got in twitter_login.php $twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); // Let's request the access token $access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']); // Save it in a session var $_SESSION['access_token'] = $access_token; // Let's get the user's info $user_info = $twitteroauth->get('account/verify_credentials'); // Print user's info print_r($user_info);If nothing goes wrong, the
print_rshould show the user’s data. You can get the user’s id with$user_info->id, his or her username with$user_info->screen_name; there’s a bunch of other info in there as well.It is very important to realize that the
oauth_verifierhasn’t been used before this. If you see the user’s info correctly and then reload the page, the script will throw an error since this variable has been used. Just go back totwitter_login.phpand it will automatically generate another fresh token.Registering users
Now that we have the user’s info we can go ahead and register them, but first we have to check if they exist in our database. Let’s begin by connecting to the database. Add these lines in the script’s beginning.
mysql_connect('localhost', 'YOUR_USERNAME', 'YOUR_PASSWORD'); mysql_select_db('YOUR_DATABASE');Modify the database info as required. Now, just below where we fetch the user’s info, we’ll have to check for the user in our database. If he or she is not there, we’ll enter the info. If the user has been registered, we must update the tokens, because Twitter has generated new ones and the ones we have in the database are now unusable. Finally, we set the user’s info to the session vars and redirect to
twitter_update.php.if(isset($user_info->error)){ // Something's wrong, go back to square 1 header('Location: twitter_login.php'); } else { // Let's find the user by its ID $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id); $result = mysql_fetch_array($query); // If not, let's add it to the database if(empty($result)){ $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES ('twitter', {$user_info->id}, '{$user_info->screen_name}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}')"); $query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id()); $result = mysql_fetch_array($query); } else { // Update the tokens $query = mysql_query("UPDATE users SET oauth_token = '{$access_token['oauth_token']}', oauth_secret = '{$access_token['oauth_token_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id}"); } $_SESSION['id'] = $result['id']; $_SESSION['username'] = $result['username']; $_SESSION['oauth_uid'] = $result['oauth_uid']; $_SESSION['oauth_provider'] = $result['oauth_provider']; $_SESSION['oauth_token'] = $result['oauth_token']; $_SESSION['oauth_secret'] = $result['oauth_secret']; header('Location: twitter_update.php'); }Note that these queries are not validated; if you leave them as they are, you are leaving your database vulnerable. Finally, below the database connection, we should set a check to verify that the user is logged in.
if(!empty($_SESSION['username'])){ // User is logged in, redirect header('Location: twitter_update.php'); }You can now greet the user by his or her username.
Let’s get to the fun side: updating, following and reading.
Step 3: Reading Statuses
There are over twenty categories of resources available: timeline, tweets, users, trends, lists, direct messages, etc. Each one has a bunch of methods, you can check them all in the official documentation. We’ll get to the basics, as most of these features are accessed in a similar way.
Just like the other two scripts, we’ll need to create the TwitterOAuth instance, including the variables in the session.
if(!empty($_SESSION['username'])){ $twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_secret']); }We’ll begin with the user’s timeline. The reference tells us that the path is
statuses/home_timeline; ignore the version and format, the library will take care of it.$home_timeline = $twitteroauth->get('statuses/home_timeline'); print_r($home_timeline);That will get you the timeline. You can fetch each item with a
foreachloop. However, the reference specifies some optional parameters likecount, which limits how many tweets will be fetched. In fact,get‘s second parameter is an array of every option needed, so if you want to fetch the latest forty tweets, here’s the code:$home_timeline = $twitteroauth->get('statuses/home_timeline', array('count' => 40));Also, you can see somebody else’s timeline, as long as it’s not protected.
statuses/user_timelinerequires either a user’s id or screen name. If you want to check @nettuts timeline, you’ll have to use the following snippet:$nettuts_timeline = $twitteroauth->get('statuses/user_timeline', array('screen_name' => 'nettuts'));As you can see, after authenticating, reading timelines is a breeze.
Step 4: Friendships
With friendships, you can check if a user follows another one, as well as follow or unfollow other users. This snippet will check if you are following me and and will create the follow if not.
But first, check the
friendships/existsandfriendships/createreference. Notice something?friendships/createmethod is POST. Fortunately, the library includes apost()function, which works just as theget()function; the main difference is thatget()is for reading andpost()is for creating, deleting or updating.Anyways,
friendships/existsrequires two parameters:user_aanduser_b, andfriendships/createrequires just one, eitherscreen_nameoruser_id.$follows_faelazo = $twitteroauth->get('friendships/exists', array('user_a' => $_SESSION['username'], 'user_b' => 'faelazo')); if(!$follows_faelazo){ echo 'You are NOT following @faelazo!'; $twitteroauth->post('friendships/create', array('screen_name' => 'faelazo')); }You can unfollow an user with basically the same code that creates a follow, just replace
createwithdestroy:$follows_faelazo = $twitteroauth->get('friendships/exists', array('user_a' => $_SESSION['username'], 'user_b' => 'faelazo')); if($follows_faelazo){ echo 'You are following @faelazo! Proceed to unfollow...'; $twitteroauth->post('friendships/destroy', array('screen_name' => 'faelazo')); }continue reading…
Related Posts