Working with the Twitter API (until 7AM)

After working with Facebook API extensively, the other night I decided it was finally to learn how to connect via Twitter API (little did I know it would keep my up until 7AM). Just a few words on my overall experience that night: it was pretty difficult to understand at first and there was a huge learning curve for me in the beginning, but as soon as I 'got it' it was pretty easy. The biggest reason why I got it was because of Jaisen Mathai. So I started off going straight to Twitter's Dev site and looked right through their tutorial. I thought immediately after reading that it might be a little over my head. They talked a lot about Oauth tokens and the flow between client/server/Twitter authentication and I will admit I was a little lost and discouraged... but I realized Google exists! So next thing I did was Google through 'how to php Twitter API' and opened the first couple results into tabs on Chrome. I skimmed over them all and noticed they all used a little Twitter php class package put together by Jaisen Mathai. I thought, okay seems pretty standard let me download that. I immediately downloaded it from a web site that was NOT Jaisen's because I thought the instructions were a little more clear (sort of a mistake, I will explain), I uploaded onto a server, and started looking at the code. I read through the tutorial and looked through the code and found it was pretty straightforward. As soon as I started playing with it though and customizing it for a simple app I wanted to make, I kept running into issues.
<?php
$twitterObj = new EpiTwitter($consumer_key,$consumer_secret);
$url = $twitterObj->getAuthorizationUrl();
?>
That should have given me a $url with the proper oauth token to go back to Twitter and log a user in to my specific website. However it kept returning a url with the proper url minus the oauth token... I dug into the code and first thing I noticed was in the EpiTwitter class some of the urls were out of date. I tried to change the class variables into the correct ones, then I ran the code again and same issue.. The next thing I did was try to ask @jmathai and hoped that he'd get back to me. He actually responded really quickly saying to email him the question. So I did and while I waited for a response I kept looking online to see if the answer was there. All my search results basically linked back to his page so I decided...you know maybe it was wise to look at what he had to say about his own stuff. I didn't notice anything different until I stumbled upon his Github link to the project. I finally realized that, woops, here was my mistake. His Github contained the most updated code and so I downloaded from there and re-uploaded the library. Boom, baby. It worked. I had gotten a very basic version of logging-in via Twitter up on the server and now it was time to play. Of course also I tweeted back at Jaisen and let him know it was just my mistake of getting old files and he was kind about it. The next thing I did was read through all the documentation of the new classes and learn how it worked. It took a couple tries and it wasn't easy at first. But as soon as I learned the structure of the GET and POST requests it became simply a matter of knowing what Twitter methods were available via the API and how to call them. By the time I became familiar everything it was probably 4AM, so I spent the remainder of the night just coding a basic functioning version of the app I wanted to make (details will be released with the app later this weekend, hopefully tonight). It was a great experience and now I know how to deal with the Twitter API! If anyone has any questions about this or needs help getting started, let me know. I feel like I have learned enough to be helpful enough at this point.

Learning by helping

Woops, almost forgot to post tonight - it's 7AM who can blame me? Thanks to the wonders of the iPhone WordPress app I can write this short and sweet blurb as I drift asleep in the comfort of my bed.

Today I was reminded of a very valuable life lesson - you get just as much out of helping someone as they get by being helped. I'm sure there are plenty of studies or philosophers out there that can point to how or why being a teacher actually helps you learn a subject better but here's a little anecdote from my life earlier today (er yesterday).

I got a tweet two nights ago saying the site wasn't working for them. I stayed in touch trying to figure out what was wrong. Unfortunately I had to leave the situation to get a precious 3 hrs of sleep before an exam I had to take. But after I woke up I continued to work on this persons case (@thesraid whose twitter handle is escaping me right now).

I looked, couldn't find his name on the database, then looked and couldn't find his oauth id. He told me maybe it was because his name had an apostrophe in it. I thought I had taken care of that problem with my mysql_escape_string calls but I looked at where the problem could lie.

Turns out there was one function (which believe it or not was the crucial function of registering a user) that did not call this. So I added it (also apologies to everyone else that suffered because of my mistake) and thought nice done. Good to go.

Wrong. More problems. Now his page wasn't loading. Looked through the source, and realized he was making it into the database now but when getting his named called to the page it broke the JavaScript because of his apostrophe again. So I called addSlashes and things worked like a charm. After things got fixed he thanked me and told me about how one time an envelope was addressed to him (John O Undefined Character String vs John O'Riordan insert funny name here later when I can remember).

Basically, I could have spent some previous hours preparing for either of my Midterms or sleeping but I knew it would be valuable to help out a user with a mistake I made. Turned out I learned something and got another user successfully registered!

I am a firm believer in help out as much as you can and you wont be disappointed. Glad I won't have to flip flop on that anytime soon.