Thursday, April 22, 2010

OAuth with Google, Twitter and... Facebook!

This is sick!

Just a few days ago, I ran into OAuth as I want to get my GMail feed based on Google Data API. I succeeded. With a little help of an OAuth open source (here, available in several programming languages).

Then I remember that I once heard that Twitter also uses OAuth as an authentication option so I turned into Twitter and had a good read. Finally, I found out that they are basically the same (hehe, it's obvious since OAuth 1.0 is a worldwide standard). I had an idea of writing a universal class which can handle both Google and Twitter OAuth functionalities. It's not too hard. I took most of the idea from the PHP example (here, PHP only). I also made a small script which accepts URI to send and intercept response from Google & Twitter servers.

At that moment, I was so excited with all the ideas but actually it has no real world benefit so I just left it there... Until today, in the F8 (says "fate") conference of Facebook, I was stunned finding out that Facebook implements OAuth too! That's so awesome! Oh, actually, Facebook implements a newer version of OAuth (2.0, which hasn't been well documented yet) but no problem. I managed to rewrite the universal script to handle all Google, Twitter and Facebook now. If you want to check it out, follow these links:

  1. For Google: http://ponology.com/oauth/google.php
  2. For Twitter: http://ponology.com/oauth/twitter.php
  3. For Facebook: http://ponology.com/oauth/facebook.php
The 3 scripts must be seperate because each one use different configuration (the ID, the secret string, etc) but they shares the same class and each scripts has the same structure like this (from facebook.php)



I'm still looking for the best way to implement something useful. Let's see

9 comments:

  1. I have a feeling that I'm such a low-tech developer, it's like I don't have any idea about what frameworks are already out there and ready to use :))

    ReplyDelete
  2. It's not actually bad to try to do everything by yourself. One day when you decide to move on and start using those libraries, you will realize a lot of interesting things which people who use them from the beginning will never know.

    ReplyDelete
  3. This is great example. Can you show source of your OAuthHelper class?

    ReplyDelete
  4. Have you managed to get the POST method to work with Google and OAuth? I'm struggling with that one.

    ReplyDelete
  5. Yes, I have. The source is available here http://code.google.com/p/oauth-everywhere/source/browse/

    ReplyDelete
  6. hi, your code is great, thanks so much , I have used it for many sources, However I cant get to use it with Linkedin.. is that because its using OAUTH 1.0a?
    any thoughts..?

    ReplyDelete
  7. Sorry, I haven't used LinkedIn for a long time so I'm not sure about it. But OAuth 1.0 may be the problem...

    ReplyDelete
  8. hmm okay,
    your code works for oauth 1 and 2 (Twitter, Facebook, Google+, Foursquare)

    nfortunately its the 1.0a version that causes the code to break, LinkedIn, Meetup, and Tumblr all use 1.0a.

    ReplyDelete