Showing posts from November, 2012

Single sign-on to Google sites using AccountManager

In the first part of this series, we presented how the standard Android online account management framework works and explored how Google account authentication and authorization modules are implemented on Android. In this article we will see how to use the Google credentials stored on the device to log in to Google Web sites automatically. Note that this is different from using public Google API's, which generally only requires putting an authentication token (and possibly an API key) in a request header, and is quite well supported by the Google APIs Client Library . First, some words on what motivated this whole exercise (may include some ranting, feel free to skip to the next section). Android developer console API: DIY If you have ever published an application on the  Android Market  Google Play Store, you are familiar with the Android  developer console . Besides letting you publish and update your apps, it also shows the number of total and active installs (notoriously

Android online account management

Our recent posts covered NFC and the secure element as supported in recent Android versions, including community ones . In this two-part series we will take a completely different direction: managing online user accounts and accessing Web services. We will briefly discuss how Android manages user credentials and then show how to use cached authentication details to log in to most Google sites without requiring additional user input. Most of the functionality we shall discuss is hardly new -- it has been available at least since Android 2.0. But while there is ample documentation on how to use it, there doesn't see to be a 'bigger picture' overview of how the pieces are tied together. This somewhat detailed investigation was prompted by trying to develop an app for a widely used Google service that unfortunately doesn't have an official API and struggling to find a way to login to it using cached Google credentials. More on this in the second part , let's first se