This class can authorize the access of users to an API using the OAuth
protocol.
It abstracts OAuth 1.0, 1.0a and 2.0 in the same class, so you can use
the same obtain a token to authorize the access on behalf of the
current user any API that supports any version of the OAuth protocol.
It provides built-in support to several popular OAuth servers, so you
do not have to configure the class manually with all OAuth server
specific details.
Currently it provides built-in support for OAuth servers of 37Signals,
Amazon, Bitbucket, Box.net, Buffer, Discogs, Disqus, Dropbox with
OAuth 1.0 and 2.0, Etsy, Eventful, Facebook, Fitbit, Flickr,
Foursquare, github, Google with OAuth 1.0a and OAuth 2.0, Instagram,
LinkedIn, Microsoft, Rdio, Reddit, RightSignature, Salesforce,
Scoop.it, StockTwits, SurveyMonkey, Tumblr, Twitter, VK, Withings,
Xero, XING and Yahoo.
Every other OAuth server is supported setting end point URLs and other
parameters using specific class variables. Additional servers may be
supported without changing the main class by configuring a separate
JSON configuration file.
The class can also send requests to API using the previously obtained
OAuth access token.
It also supports 2 legged API access, so it can send signed API
requests that do not require user authorization.
For servers that support offline access like Google and Box.net, the
class can also verify if the access token expired and refresh the
token value before sending an API call, without requiring the user
presence.