oauthgoogle-buzz

How to get a OAuth token for Google Buzz using username and password without showing Googles login page?


To read Google Buzz activities, an authorization token is required. A web application would redirect to Googles login page, where the user logs in and a token is returned back to the web application.

But I have a local Java application without a UI (like a script). This application knows username and password. How to get an authorization token, using this username and password, without presenting the Google login page?


Solution

  • It's probably a bad idea, but you could use an HTTP library like HttpClient to make the same requests the user would. You will need to use a header-watching utility to figure out what URLs you need to hit and what headers you need to use, but it's possible to automate this. If google ever changes their page layout, ids, classes, or overall page structure, your parsing code will break.

    Furthermore, you will also need to be able to capture the return response from the server, which would involve receiving the response at a certain web endpoint. This could be addressed with solution 2, outlined below.

    In summary.

    Solution 1 - Authenticating

    1. HttpClient GET against authentication URL.
    2. TagSoup to parse page response, store any data (if any) that's required from the page.
    3. XOM xml parser to work with the response from [1.2], if needed.
    4. HttpClient requests against authorization URLs

    Solution 2 - Receiving response from google

    1. Launch a Jetty server.
    2. Set your response URL to localhost:****/whatever when authenticating.
    3. Accept response in Jetty. Retrieve response in command line application.

    Disclaimer:

    This is all untested and highly theoretical. There may be a better way to do this, but it's a lot of work to avoid just opening a web browser and letting the user login.