~A Brief Overview of Tumblr’s API and OAuth/xAuth for Normal People~
(If you already know what OAuth and xAuth are, you can skip this section.)
Tumblr shut down the “Version 1” of their API this week.
(For purposes of this discussion, whenever you see “API” just think “post-to and/or read -from Tumblr without using a web browser”.)
“Version 2” of their “API” uses “OAuth” which is a jargon-y word for “a more secure way to use the API” (that is, a more secure way to post-to and/or read-from Tumblr without a web browser).
OAuth is complicated. If you have used a Twitter application on the iPhone, you’ve probably seen this happen:
- You get a button to “Authorize” whatever app you want to use (let’s call it “AppX”
- That button sends you to Twitter’s web page
- You log in to Twitter and say “Yes I want to allow AppX to post-to and read-from Twitter”
- Once you click OK, that web page sends you BACK to “AppX” and says “This person says that you can access their Twitter account.
At each one of those steps, things can fail or break down for a variety of reasons.
OAuth is like a bodyguard.
For web apps, or even iPhone apps, OAuth might be complicated, but it’s feasible.
For a “shell script”, OAuth is much more difficult. How difficult? Twitter wrote their own custom command-line program for use with OAuth. It requires several awkward steps of configuration and generally makes things harder to do than they were before.
There is an alternative called “xAuth” which is basically “OAuth made a little easier.”
If you have an iPhone or an iPad and put your Twitter login information into the “Settings” app, that means that you don’t have to do the 4 step “dance” I described above. That’s xAuth: it has most of the benefits of OAuth, but with much less hassle to make it work.
Twitter has xAuth, but they don’t allow most people to use it. It’s basically a waste of time to even ask unless you are a Big Important Company.
Tumblr has xAuth, but it is not enabled by default. You have to ask them for permission to use it.
~Here’s the part where Tumblr Support lied to me.~
Two days ago I created a new shell script called “tmblr.sh”. I registered it with Tumblr, and then emailed them to ask for permission to use xAuth. (This is so I can bring the SoundOfTheBeep family of sites back online.)
Yesterday I received a reply from Tumblr Support which said:
“The name ‘tmblr.sh’ is too close to ‘Tumblr’ so we’d like you to change it…” (Paraphrased… and they pointed me to the rules that state, very clearly, that this is a requirement for everyone. Ok, fair enough.)
Then they said (and this is an exact quote):
If you could please change the name of your app to comply with the above paragraph, we’ll be happy to approve your request.
“Above paragraph” was the part about the rules for the names of apps, and “your request” was “to use xAuth”. (“App” is really “shell script” but it’s the same thing.)
So I went in and renamed the script and changed all of the references. (Which wasn’t much, but did take some time and effort.) Then I emailed them back and told them I had changed the name of my app. Then I waited.
Today I received another reply from the same person in Tumblr support:
We are unable to grant xAuth access for your application at this time unfortunately.
You should be able to accomplish your apps goal without using XAuth. If you have any issues or problems please join our Google Group at http://groups.google.com/group/tumblr-api or ask a question at developers.tumblr.com/ask.
First: I posted a question on the Google Group a month ago explaining exactly what I wanted to do to try to make a shell script which could work with OAuth and the new API.
That post has received 1 reply from J. Random Stranger saying (essentially): “Um, yeah, that might work, but it isn’t going to be easy, so you might want to do it a different way.”
The post has received ZERO replies from Tumblr. None. Nothing. Zero. Zilch. Nada.
Second: Tumblr Support lied to me.
They said “If you change the name of your app, we’ll let you use xAuth.”
I changed the name of my app.
Now they say “We are unable to grant xAuth access for your application at this time unfortunately.”
So… they lied when they said t hat all I had to do was change the name of the app.
Let’s also be clear that “We are unable to grant xAuth access” really means “We have decided not to grant xAuth access.” It is not as if there is some technical, moral, or legal reason why they can’t grant it. They control the system. If they wanted to do it, they could do it.
But instead of saying “No” they’re saying “We can’t.” Which is also a lie. It’s the sort of lie that Support people tell all of the time because it tends to placate people by giving the impression that nothing can be done about it. But it’s still a lie.
(This is the same sort of lie that a lot of parents tell their child when they ask for a toy at the store and the parent says “We can’t afford that” instead of saying “No” when what they really mean is “I have enough money to buy that, but I’m not going to buy that for you because I have decided that you don’t need it” or some other reason. But saying “We can’t afford it” is harder to argue with than “No”.)
((And yes, I understand that there are parents who would love to buy things for their kids but can’t because of real financial constraints. That’s not what I’m talking about.))
I find that I have neither the energy nor the enthusiasm for dealing with Tumblr, Inc. anymore. As Twitter has shown, spending time working with someone else’s API means being willing to accept whatever restrictions they decide to make, either now or in the future. As Twitter has shown, there is no reason to expect that a company will appreciate and value the work that 3rd-party developers bring to their network. Some day Tumblr might do just what Twitter did, screw all of their developers in the hopes of making money showing ads. I see no reason to think Tumblr will be any different, especially since my first experience with them in a “developer” capacity resulted in being lied to from day one, and not getting any help from their supposed “developer forum.”
(If you consider what Tumblr did a “small lie” that’s fine; but believe if someone will lie about something little, then it’s a good indication that they’ll lie about something big.)
I’m not leaving Tumblr, because I still want to stay connected with the people I follow here. But I don’t imagine that we’ll still be here in another 2 years. So until then, I’ll just wait.
~”What does this mean for SoundOfTheBeep?”~
(If you aren’t interested in SoundOfTheBeep or any of the related sites, you can skip the rest of this post.)
There’s good news, and there’s bad news.
The good news is that SoundOfTheBeep is back as of September 06, 2012 at 06:15PM.
When Tumblr Support told me that I couldn’t use xAuth, I decided to look for other alternatives that I would not have to support. I found a way to do it using IFTTT, otherwise known as If This, Then That.
IFTTT works like this: “If (or when) something happens, do something.”
IFTTT can automate posting the time to Tumblr.
IFTTT can automate posting the time to Tumblr each hour at :00, :15, :30, or :45 minutes.
I created 4 “recipes” for IFTTT, one for each quarter-hour.
Thus, SoundOfTheBeep was saved.
However, there’s some “bad” news, too.
The first three are fairly minor:
Now instead of relying on one free online service, we’re relying on two. (“Now you have two problems…”)
There seems to be absolutely no way to format the timestamp other than the default, which looks like this: “September 06, 2012 at 07:16PM”
So far it seems like the posts are sent “about” every 15 minutes. For example, the post that should have been sent at 7:15 arrived at “7:16:26 pm”. That’s not a huge deal. It could be that IFTTT had to re-try the post because Tumblr wasn’t responding. As long as the posts are relatively close to the right time, that seems “good enough” for me.
Each IFTTT can only post to one Tumblr “blog” from one Tumblr account. That means that I had to create a new IFTTT account to post to IFTTT (just in case I ever want to use my actual Tumblr with my actual IFTTT account). That isn’t “difficult” but it is definitely “annoying” to the point where I don’t think I am going to keep maintaining all of the other SoundOfTheBeep timezone Tumblrs.
The good news is that if others are interested in creating other “SoundOfTheBeep” Tumblrs using IFTTT, it will be fairly easy (and free) for you to do so. You will just need to is:
Get in touch with me and tell me which time zone you want to use. (More on that in a moment.)
Create a free IFTTT account
Setup the Date and Time channel (Translation: “pick your time zone from a list”)
Setup the Tumblr channel (Translation: “Click about 5 buttons on IFTTT’s Web site and tell it which Tumblr you want to post to” (see step #1, above)
Copy my 4 recipes to this new IFTTT account. (Again, this is just a matter of clicking on the right buttons, it’s all very simple.)
Note that you could just create a new sub-Tumblr under your own account and post to it from there. However, my previous experience with Tumblr taught me that if Tumblr decides to shut down one of your Tumblr “blogs” they will probably just suspend your entire account. If you care at all about your Tumblr site, I would recommend using a separate account. There are also daily posting limits.
I have already created several accounts to manage the various SoundOfTheBeep sites, so all you will need is the login information. That way the people who are already following, say, WindyTime won’t have to find out about your new Tumblr.
Each Time Zone only needs one person to set it up. It should only take about 10 minutes or so if you are familiar with IFTTT. If you aren’t, it might take a little longer, but not much. However, I really don’t feel like doing this 6 more times.
As a reminder, here are the other sites which are a part of the “SOTB family”:
If you would like to use one of those, and would be willing to spend a few minutes getting it up and running, let me know. (Or check it out to see if it is up and running already, maybe someone else in your time zone already did it!)
If you want to start a new Tumblr for a given Time Zone, that’s fine too. If you let me know the URL I will try to help get the word out.