Twitter's API has Changed
Saturday, May 31, 2008

A couple days ago, I noticed that the Twitter statuses that show up on my website were no longer returning entries more than 24 hours old.  This was curious, because when I hit the URL directly, I was able to see all the updates.  Turns out the difference was authentication; if I logged out of Twitter, the direct URL gave me the same results that I saw on my website.  Yesterday, I noticed that no Twitter updates were appearing.  I figured Twitter was just having a bad day, but this morning I saw that it still wasn't working.  On investigation, it appears that Twitter has changed the behavior of their API.  Now, I can't get any status results at all without HTTP authentication.

Normally, this shouldn't present a problem.  But I was using the PHP function file_get_contents() to retrieve the data, and this doesn't support any HTTP request options.  The http_get() function does, but this requires a PECL extension, which isn't installed on my host's server, and which my host is not willing to install.

So began the quest for a workaround.  I noticed on the StartLogic control panel that there was a section listing PEAR modules.  I had thought this was empty, but then realized that it was actually just hidden; you needed to click on the heading to see the modules.  And so, scrolling through the list, I saw that among the modules listed was "HTTP_Request 1.2.4 stable".  Okay, interesting.  I pulled up the PEAR documentation, executed the example as written, and lo and behold, it worked!  This also provided a means for supplying basic HTTP authentication...which also worked just like the example.  Amazing.  So, I then updated my Twitter module, and we're back in business.

Leave a comment

The Lord is not slack concerning His promise, as some count slackness, but is longsuffering toward us, not willing that any should perish, but that all should come to repentance.
— 2 Peter 3:9