Skip to content

Instantly share code, notes, and snippets.

@daspilker
Created October 4, 2011 21:38

Revisions

  1. daspilker created this gist Oct 4, 2011.
    32 changes: 32 additions & 0 deletions get_access_token.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    var express = require('express');
    var oauth = require('oauth');

    var oa;
    var app = express.createServer();

    app.get('/', function (req, res) {
    res.end('<!DOCTYPE html><meta charset=utf-8><form action=/authorize><label>Client ID: <input type=text name=client_id required autofocus></label><br><label>Client Secret: <input type=text name=client_secret required></label><br><label>Scope: <input type=text name=scope required></label><br><input type=submit>');
    });
    app.get('/authorize', function (req, res) {
    oa = new oauth.OAuth2(req.query.client_id,
    req.query.client_secret,
    "https://accounts.google.com/o",
    "/oauth2/auth",
    "/oauth2/token");
    res.redirect(oa.getAuthorizeUrl({scope:req.query.scope, response_type:'code', redirect_uri:'http://localhost:8553/callback'}));
    });
    app.get('/callback', function(req, res) {
    console.log(req.query.code);
    oa.getOAuthAccessToken(req.query.code, {grant_type:'authorization_code', redirect_uri:'http://localhost:8553/callback'}, function(err, access_token, refresh_token) {
    if (err) {
    res.end('error: ' + JSON.stringify(err));
    } else {
    res.write('access token: ' + access_token + '\n');
    res.write('refresh token: ' + refresh_token);
    res.end();
    }
    });
    });

    app.listen(8553);
    console.log('open http://localhost:8553');
    8 changes: 8 additions & 0 deletions package.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    {
    "name": "get_access_token",
    "version": "0.0.1",
    "dependencies": {
    "express": "2.4.6",
    "oauth": "0.9.5"
    }
    }