It's been a month Google released their Buzz API at Google I/O and I have been dying ever since to write an article on it. Finally got an opportunity today and really hope that the posts live up to my expectation :)
In this post, I am going to introduce the Google Buzz API and the technologies surrounding it like OAuth, REST, AtomPub and JSON. And in my next post, I will be emphasizing on how to integrate OACurl, an OAuth wrapper, with a simple Java Desktop Application. Most of the information in this post is pretty basic and if you are comfortable with these technologies, I would recommend you to skip the post.
Google Buzz is a social networking and messaging tool from Google, designed to be integrated into Gmail. Google Buzz was an attempt by Google to compete with micro-blogging services like Twitter. After the release of the Buzz API, it has been well received both as a platform and as a service.
The Google Buzz API revolves around two main concepts - Authentication which is done through Open Authorization (OAuth) and Service Usage which is managed using the REST architecture with data formats like XML (through AtomPub) and JSON.
OAuth is an open standard that allows users to share their private resources like photos, videos, etc. stored on one site with another site without having to hand out their username and password. It works through the exchange of tokens which provides access to a specific site for specific resources for a defined duration.
Most of Google Data APIs like the Google Calendar Data API, Blogger Data API, Google Contacts Data API, etc. use OAuth for authentication. The authentication process is done through a Web Browser for web applications as well as desktop applications using the APIs. A browser pops up and users are authenticated with respect to their usernames and passwords directly by Google and then the control is returned back to the application which can proceed accordingly.
A major disadvantage of this process is that a web-browser should be available for authentication even for desktop applications.
Data transfer for the Buzz API is done primarily on the basis of REST (Representational State Transfer). It is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The crux of REST is that is uses the basic HTTP methods like GET, POST, etc. for resource manipulation (getting a resource, saving a resource, etc.)
Google Buzz API returns data in two formats - XML and JSON. XML is sent in the form of AtomPub. AtomPub (also known as APP) stands for Atom Publishing Protocol. It is a HTTP-based protocol for creating and updating web resources. It uses an XML language known as the "Atom Syndication Format" (ASF) and is very popular for web feeds. The Atom Syndication Format and AtomPub form the Atom Standard. The ASF is primarily an XML format with tags like feeds, links, etc.
A Quick Example
Navigate to https://www.googleapis.com/buzz/v1/activities/userId/@public to see your latest public buzzes in the ATOM format and to https://www.googleapis.com/buzz/v1/activities/userId/@public?alt=json to see them in the JSON format.
There are several URLs like these available at the Google Buzz API site - http://code.google.com/apis/buzz/v1/using_rest.html. However most of them require authentication before they show the results, which means that without authorization by OAuth, a URL based mechanism will not fetch the data.
To know your userId, you can do the following steps -
- Login to GMail and go to the Buzz tab
- Click on your name which is displayed at the upper-left corner of the Buzz tab
- The last handle (the string after the last /) is your userId