Is it your dream to one day work for Google? Stop dreaming! By now I spent quite some time digging around in the Android codebase and “nightmare” is pretty much the nicest word I can find for it. Android under the hood is one compatibility hack nailed on top of another while trying really, really hard to avoid giving the impression of being written in an object oriented language.
Anyway, I digress.
Recently, Google shut off the ClientLogin API in favor of the more “secure” OATH2 (yeah, “secure”, that’s worth a blog post of it’s own), breaking all applications that relied on it. All applications? Not quite! Google’s big problem here is an evil of their own making: the fucked up updating system of Android. Since they decided to make the storage system non removable, there are now millions of devices in the wild that are abandoned by their manufacturers (but still being sold!) that will never see an update. So as long as Jelly Bean still has a significant marketshare, Google can’t really get rid of ClientLogin.
Raccoon (v3.6) uses that loophole by acting like an early Jelly Bean when logging in. This works nicely with legacy accounts, but fails for fresh account, you’ll just get an authentication error. Why? Scroll up! Keyword: compatibility hacks! New Google accounts are now no longer eligible for logging in via ClientLogin, unless you happen to log them in on an old Android device. That will set the “aw shit, user has legacy hardware” flag on the new account and you can use it with Raccoon (really).
Of course, the whole point of Raccoon is to avoid letting Google sink it’s claws into your device. Fortunately (till I can make a bugfix release), there is a stupendously easy workaround to set that flag, using nothing more than your webbrowser: just log the account in from the Google Play website once.
