Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - bcoe/node-oauth: OAuth wrapper for node.js · GitHub
Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-oauth

A simple oauth API for node.js . This API allows users to authenticate against OAUTH providers, and thus act as OAuth consumers. It also has support for OAuth Echo, which is used for communicating with 3rd party media providers such as TwitPic and yFrog.

Tested against Twitter (http://twitter.com), term.ie (http://term.ie/oauth/example/), TwitPic, and Yahoo!

Also provides rudimentary OAuth2 support, tested against facebook, github, foursquare, google and Janrain. For more complete usage examples please take a look at connect-auth (http://github.com/ciaranj/connect-auth)

Installation

$ npm install oauth

Examples

To run examples/tests insall Mocha $ npm install -g mocha and run $ mocha you-file-name.js:

OAuth1.0

describe('OAuth1.0',function(){varOAuth=require('OAuth');it('tests trends Twitter API v1.1',function(done){varoauth=newOAuth.OAuth('https://api.twitter.com/oauth/request_token','https://api.twitter.com/oauth/access_token','your application consumer key','your application secret','1.0A',null,'HMAC-SHA1');oauth.get('https://api.twitter.com/1.1/trends/place.json?id=23424977','your user token for this app',//test user token'your user secret for this app',//test user secret function(e,data,res){if(e)console.error(e);console.log(require('util').inspect(data));done();});});});

OAuth2.0

describe('OAuth2',function(){varOAuth=require('OAuth');it('gets bearer token',function(done){varOAuth2=OAuth.OAuth2;vartwitterConsumerKey='your key';vartwitterConsumerSecret='your secret';varoauth2=newOAuth2(server.config.keys.twitter.consumerKey,twitterConsumerSecret,'https://api.twitter.com/',null,'oauth2/token',null);oauth2.getOAuthAccessToken('',{'grant_type':'client_credentials'},function(e,access_token,refresh_token,results){console.log('bearer: ',access_token);done();});});

Build XOAuth String

varImap=require('imap');describe('Build XOAuth String',function(){varOAuth=require('OAuth');it('tests GMail XOAuth API',function(done){varoauth=newOAuth.OAuth(null,null,'your application consumer key','your application secret','1.0',null,'HMAC-SHA1'),imap=newImap({host: 'imap.googlemail.com',port: 993,xoauth: oauth.buildOAuthString('https://mail.google.com/mail/b/'+email+'/imap/','your user token for this app','your user secret for this app'),secure: true});imap.connect(function(err){imap.getBoxes(function(err,boxes){if(e)console.error(e);console.log(require('util').inspect(boxes));imap.logout();done();});});});});

Change History

  • 0.9.10
    • OAuth2: Addresses 2 issues that came in with 0.9.9, #129 & #125 (thank you José F. Romaniello)
  • 0.9.9
    • OAuth1: Fix the mismatch between the output of querystring.stringify() and this._encodeData(). (thank you rolandboon)
    • OAuth2: Adds Authorization Header and supports extra headers by default ( thanks to Brian Park)
  • 0.9.8
    • OAuth1: Support overly-strict OAuth server's that require whitespace separating the Authorization Header parameters (e.g. 500px.com) (Thanks to Christian Schwarz)
    • OAuth1: Fix incorrect double-encoding of PLAINTEXT OAuth connections (Thanks to Joe Rozner)
    • OAuth1: Minor safety check added when checking hostnames. (Thanks to Garrick Cheung)
  • 0.9.7
    • OAuth2: Pass back any extra response data for calls to getOAuthAccessToken (Thanks to Tang Bo Hao)
    • OAuth2: Don't force a https request if given a http url (Thanks to Damien Mathieu)
    • OAuth2: Supports specifying a grant-type of 'refresh-token' (Thanks to Luke Baker)
  • 0.9.6
    • OAuth2: Support for 302 redirects (Thanks Patrick Negri).
    • OAuth1/2: Some code tidying. ( Thanks to Raoul Millais )
  • 0.9.5
    • OAuth1: Allow usage of HTTP verbs other than GET for retrieving the access and request tokens (Thanks to Raoul Millais)
  • 0.9.4
    • OAuth1/2: Support for OAuth providers that drop connections (don't send response lengths? [Google])
    • OAuth2: Change getOAuthAccessToken to POST rather than GET ( Possible Breaking change!!! ... re-tested against Google, Github, Facebook, FourSquare and Janrain and seems ok .. is closer to the spec (v20) )
  • 0.9.3
    • OAuth1: Adds support for following 301 redirects (Thanks bdickason)
  • 0.9.2
    • OAuth1: Correct content length calculated for non-ascii post bodies (Thanks selead)
    • OAuth1: Allowed for configuration of the 'access token' name used when requesting protected resources (OAuth2)
  • 0.9.1
    • OAuth1: Added support for automatically following 302 redirects (Thanks neyric)
    • OAuth1: Added support for OAuth Echo (Thanks Ryan LeFevre).
    • OAuth1: Improved handling of 2xx responses (Thanks Neil Mansilla).
  • 0.9.0
    • OAuth1/2: Compatibility fixes to bring node-oauth up to speed with node.js 0.4x [thanks to Rasmus Andersson for starting the work ]
  • 0.8.4
    • OAuth1: Fixed issue #14 (Parameter ordering ignored encodings).
    • OAuth1: Added support for repeated parameter names.
    • OAuth1/2: Implements issue #15 (Use native SHA1 if available, 10x speed improvement!).
    • OAuth2: Fixed issue #16 (Should use POST when requesting access tokens.).
    • OAuth2: Fixed Issue #17 (OAuth2 spec compliance).
    • OAuth1: Implemented enhancement #13 (Adds support for PUT & DELETE http verbs).
    • OAuth1: Fixes issue #18 (Complex/Composite url arguments [thanks novemberborn])
  • 0.8.3
    • OAuth1: Fixed an issue where the auth header code depended on the Array's toString method (Yohei Sasaki) Updated the getOAuthRequestToken method so we can access google's OAuth secured methods. Also re-implemented and fleshed out the test suite.
  • 0.8.2
    • OAuth1: The request returning methods will now write the POST body if provided (Chris Anderson), the code responsible for manipulating the headers is a bit safe now when working with other code (Paul McKellar)
    • Package: Tweaked the package.json to use index.js instead of main.js
  • 0.8.1
    • OAuth1: Added mechanism to get hold of a signed Node Request object, ready for attaching response listeners etc. (Perfect for streaming APIs)
  • 0.8.0
    • OAuth1: Standardised method capitalisation, the old getOauthAccessToken is now getOAuthAccessToken (Breaking change to existing code)
  • 0.7.7
    • OAuth1: Looks like non oauth_ parameters where appearing within the Authorization headers, which I believe to be incorrect.
  • 0.7.6
    • OAuth1: Added in oauth_verifier property to getAccessToken required for 1.0A
  • 0.7.5
    • Package: Added in a main.js to simplify the require'ing of OAuth
  • 0.7.4
    • OAuth1: Minor change to add an error listener to the OAuth client (thanks troyk)
  • 0.7.3
    • OAuth2: Now sends a Content-Length Http header to keep nginx happy :)
  • 0.7.2
    • OAuth1: Fixes some broken unit tests!
  • 0.7.0
    • OAuth1/2: Introduces support for HTTPS end points and callback URLS for OAuth 1.0A and Oauth 2 (Please be aware that this was a breaking change to the constructor arguments order)

Contributors (In no particular order)

About

OAuth wrapper for node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages