I’ve been working on a new project these past few days that requires user authentication. Those who know me know I love convergence, that is, the more you can condense the tools you need while still keeping the experience the same, the better. That is why I love Adium (though I wish it also did Skype chat); that is why I love my iPhone (Jailbroken because that just adds even more to the convergence); and that is why I love websites that don’t make me register a new account when they do need me to register.
Any good emerging website needs to understand that there are established players: Google, Facebook, and Twitter are examples of services that people may already be registered for. If you can leverage their APIs to cut down on the amount of work a new user needs to do to interact with your service, the user is more likely to actually use it. For instance, if a shopping site lets me check out with either Amazon, Paypal, or Google Checkout WITHOUT making me register for an account, they are more likely to see me there again.
This project that I am working does require a user to make an account; however, this process is mostly transparent to the user. For instance, using Facebook Connect, a user can create an account by clicking the Facebook logo, logging in to Facebook if they don’t already have a Facebook session, and authorizing the application. These 2 or 3 clicks happen so fast that the user may not even realize that when they are redirected back to the site from Facebook, the site is already welcoming them as a registered user. This works great with Facebook, but this post is about Twitter. What does Twitter do (or rather what does it not do) that makes this impossible.
Twitter does not give API access to the user’s Email address. This is a problem as the email address is the only unique field that can distinguish a user in this application. Sure, we can use a username; however, what’s to say that this is consistent among sites? Additionally, what stops someone from choosing someone else’s username from one site to the other. Email addresses usually require confirmation to ensure that you actually own it. You cannot own a username.
So, because Twitter does not let me query a user’s Email address even after they agree to let me use their account for authentication, I have to ask the user to put in their Email address. This detracts from the user experience and makes the registration error prone. The easy fix: give users the ability to expose their email to external applications. One checkbox that can make app development incredibly easy.
TL;DR: Twitter needs to enable Email access through its API.
PS, I’ll be elaborating on my quest for finding a great Rails authentication/authorization system as well as whether or not Rails “magic” is actually a good thing in another post.