Example code for github
This commit is contained in:
parent
7f251f49fb
commit
467234da36
73
examples/github-example.js
Normal file
73
examples/github-example.js
Normal file
@ -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);
|
Loading…
x
Reference in New Issue
Block a user