So a few interesting, or rather frustrating things, about the current state of the Twitter API.
I spent way too much time fucking around with a couple of PHP Twitter API libraries to do some automated tweeting. The change late last year of requiring OAuth authentication seems to have left most libraries broken. TwitterOAuth seemed to support OAuth and I saw it mentioned in a couple of blog posts, so I gave it a try. It seemed to work well and I got the access tokens, but subsequent requests resulted in a “Incorrect signature” error. So I used the Twitter class by Tijs Verkoyen, which did the trick.
With the new web client supporting media attach to tweets, I figured surely there must be some way to do this from the API. There isn’t. Only content from one of Twitter’s media partners is attached. The term “media partners” should have probably been a red flag to developers regarding the shape of things to come. To add insult to injury, the client-side code for this is ridiculously easy to extend (creating a new twttr.mediaType).
Finally, the recent announcement with Twitter coming out against third-party clients. I can’t say I’m surprised at all, especially as Twitter moves further towards selling ads and actually making a profit, for which they’ll need tighter control. Why third-party clients were allowed in the first place is questionable beyond it being a bait-and-switch tactic to lure developers and users. Personally, I use the web client, so I don’t care that much as a user and my recent development efforts have just revolved around server-side tweeting, so I don’t care that much as a developer, but to those burned I’d say suck it up and learn from it. Twitter, Facebook, bit.ly, whoever… pretty much every company out, they doesn’t make an API for your sake, but for theirs. Invest too much time, energy, and/or money and your almost definitely going suffer disappointment and betrayal. If your project is important to you, be ready to pull the plug and build your own platform or ecosystem; use them, don’t let them use you.