Permalink
Browse files

Merge pull request #200 from prometheansacrifice/master

Example code for github
  • Loading branch information...
2 parents 7f251f4 + 467234d commit bfa43b44e7fdfb380680ee268cb1e6739c36cad9 @ciaranj committed Jun 20, 2014
Showing with 73 additions and 0 deletions.
  1. +73 −0 examples/github-example.js
View
73 examples/github-example.js
@@ -0,0 +1,73 @@
+var http = require('http');
+var qs = require('querystring');
+// var OAuth = require('oauth'), OAuth2 = OAuth.OAuth2;
+var OAuth2 = require('../lib/oauth2.js').OAuth2;
+
+var clientID = '';
+var clientSecret = '';
+var oauth2 = new OAuth2(clientID,
+ clientSecret,
+ 'https://github.com/',
+ 'login/oauth/authorize',
+ 'login/oauth/access_token',
+ null); /** Custom headers */
+
+http.createServer(function (req, res) {
+ var p = req.url.split('/');
+ pLen = p.length;
+
+ /**
+ * Authorised url as per github docs:
+ * https://developer.github.com/v3/oauth/#redirect-users-to-request-github-access
+ *
+ * getAuthorizedUrl: https://github.com/ciaranj/node-oauth/blob/master/lib/oauth2.js#L148
+ * Adding params to authorize url with fields as mentioned in github docs
+ *
+ */
+ var authURL = oauth2.getAuthorizeUrl({
+ redirect_uri: 'http://localhost:8080/code',
+ scope: ['repo', 'user'],
+ state: 'some random string to protect against cross-site request forgery attacks'
+ });
+
+
+ /**
+ * Creating an anchor with authURL as href and sending as response
+ */
+ var body = '<a href="' + authURL + '"> Get Code </a>';
+ if (pLen === 2 && p[1] === '') {
+ res.writeHead(200, {
+ 'Content-Length': body.length,
+ 'Content-Type': 'text/html' });
+ res.end(body);
+ } else if (pLen === 2 && p[1].indexOf('code') === 0) {
+
+ /** Github sends auth code so that access_token can be obtained */
+ var qsObj = {};
+
+ /** To obtain and parse code='...' from code?code='...' */
+ qsObj = qs.parse(p[1].split('?')[1]);
+
+ /** Obtaining access_token */
+ oauth2.getOAuthAccessToken(
+ qsObj.code,
+ {'redirect_uri': 'http://localhost:8080/code/'},
+ function (e, access_token, refresh_token, results){
+ if (e) {
+ console.log(e);
+ res.end(e);
+ } else if (results.error) {
+ console.log(results);
+ res.end(JSON.stringify(results));
+ }
+ else {
+ console.log('Obtained access_token: ', access_token);
+ res.end( access_token);
+ }
+ });
+
+ } else {
+ // Unhandled url
+ }
+
+}).listen(8080);

0 comments on commit bfa43b4

Please sign in to comment.