[Abandoned]
This library is old and unmaintained. There are far better and more modern alternatives.
jsOAuth - JavaScript OAuth library
jsOAuth is a javascript library implementing the OAuth protocol. jsOAuth aims to form the basis of custom clients such as Twitter and Yahoo.
Written in JavaScript, jsOAuth aims to be a fully featured open source OAuth library for use in Adobe AIR, Appcelerator Titanium and PhoneGAP. In fact, anywhere that javascript can be used and has cross-domain XMLHttpRequests. For security reasons jsOAuth doesn't run in the browser. Browsers are only mentioned here for running the test suite. If you need jsOAuth in the browser, write an extension.
Released under the MIT. Please see LICENSE in the project root folder for more information.
Documentation
Find the API reference and tutorials on the Documentation site. For recipes on ways to get things working with jsOAuth, try the recipes page. If you need more help or discussion, try the Google jsOAuth Group.
Usage
Download the minified library from the distribution directory and include it in your html.
<script type="text/javascript" src="library/jsOAuth-1.3.7.min.js"></script>
This gives you a global OAuth object for you to set up and make requests with. Setting it up is simple.
<script type="text/javascript">
var oauth, options;
options = {
enablePrivilege: true,
consumerKey: 'ba9df9055c77f338',
consumerSecret: '846ffe1ec3b18989e73fe7fff833'
};
oauth = OAuth(options);
</script>
Note: EnablePrivilege lets you test jsOAuth in Firefox 3, Firefox >= 5 doesn't work
You can test in chrome using the following commandline on OSX /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --allow-file-access-from-files --allow-file-access --user-data-dir=~/chrome-test/ spec/runner.html
On Ubuntu try /opt/google/chrome/google-chrome --disable-web-security --allow-file-access-from-files --allow-file-access --user-data-dir=~/chrome-test/ spec/runner.html
You'll need to replace the consumer key and secret with your own. Once that is done, you can make your authenticated 2-legged request.
<script type="text/javascript">
oauth.get('http://oauth-sandbox.sevengoslings.net/two_legged', function (data) {
alert(data);
});
</script>
Hopefully the syntax will look familier to you, if you've used any kind of javscript framework such as jQuery.
Node.js
On Node you'll need to install the XHR module with npm install xhr
Please let me know if jsOAuth doesn't work for you or if your application requires something jsOAuth doesn't currently support. I'm always happy to hear your suggestions. [email protected]
If you like jsOAuth and want to see new features, please donate.
Further reading and tutorials
- Example: Boilerplate for PIN based authentication in javascript
- Tutorial: Titanium & jsOAuth - Part 1
- Tutorial: Titanium & jsOAuth - Part 2
- Tutorial: OAuth and PIN based authorization in Javascript
- Tutotial: Twitter: jsOAuth and Child Browser plugin: non-PIN OAuth access!
- Snippet: A simple example of PIN-based oauth flow with Twitter and jsOAuth by @funkatron
- Snippet: How to upload files using jsOAuth and FormData by @lukaszkorecki
Applications
Libraries
If you have a tutorial you think should be included here, please email me with links.
Building
To start developing, clone this repository and initialise the dependent git submodules by executing the following commands:
git submodule init
git submodule update
To build the entire library type make
from the command line.
To build just the W3C compatible version, type make jsoauth
from the command line.
To build just CommonJS/Node.JS compatible module type make commonjs
from the command line.
All files are compiled into the dist directory.
To start over once you have already built a copy, type make clean
to delete
all built distribution files
Issues
Please report all issues on the GitHub issue tracker for jsOauth.
Testing
To test I use Google Chrome
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --allow-file-access-from-files --allow-file-access spec/runner.html
Authors
- Rob Griffiths (rob AT bytespider DOT eu) @bytespider