github-token

0.1.1 • Public • Published

github-token

Login with GitHub and retrieve an access token

Usage

configuration

Configuration can be done with a config object or with environment variables

// config object
var githubToken = require('github-token')({
  githubClient: 'YOUR_CLIENT_KEY',
  githubSecret: 'YOUR_GITHUB_SECRET',
  baseURL: 'http://localhost',
  callbackURI: '/callback',
  scope: 'user' // optional, default scope is set to user
});
 
// environment variables
var githubToken = require('github-token')();

Environment variables are used if a config object isn't passed, and include

  • GITHUB_CLIENT
  • GITHUB_SECRET
  • GITHUB_BASE_URL
  • GITHUB_CALLBACK_URI
  • GITHUB_SCOPE

login

login is passed the request and response objects, and redirects to GitHub OAuth login

require('http').createServer(function(req, res){
  if(req.url.match(/login/)){
    return githubToken.login(req, res);
  }
}).listen(80);

callback

callback returns a promise or takes a callback

// promise
require('http').createServer(function(req, res){
  if(req.url.match(/callback/)){
    return githubToken.callback(req, res)
      .then(function(token){
        req.session.token = token;
      });
  }
}).listen(80);
 
// callback
require('http').createServer(function(req, res){
  if(req.url.match(/callback/)){
    return githubToken.callback(req, res, function(err, token){
      req.session.token = token;
    });
  }
}).listen(80);

What about github-oauth

I took a lot of inspiration from github-oauth, but didn't like the evented model. Especially, when the config is done globally to an app or you need to access the request again.

I removed the loginURI option, because there is no route sugar, but all other options are the same.

Example:

var githubToken = require('github-token')({
  githubClient: process.env['GITHUB_CLIENT'],
  githubSecret: process.env['GITHUB_SECRET'],
  baseURL: 'http://localhost',
  callbackURI: '/callback',
  scope: 'user' // optional, default scope is set to user
});
 
require('http').createServer(function(req, res){
  if(req.url.match(/login/)){
    return githubToken.login(req, res);
  }
  if(req.url.match(/callback/)){
    return githubToken.callback(req, res)
      .then(function(token){
        req.session.token = token;
      });
  }
}).listen(80);

Package Sidebar

Install

npm i github-token

Weekly Downloads

0

Version

0.1.1

License

MIT

Last publish

Collaborators

  • phated