Skip to content

Instantly share code, notes, and snippets.

@santosh79
Created March 3, 2012 07:04
Show Gist options
  • Save santosh79/1964797 to your computer and use it in GitHub Desktop.
Save santosh79/1964797 to your computer and use it in GitHub Desktop.

Revisions

  1. santosh79 revised this gist Mar 3, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion twitter-oauth.js
    Original file line number Diff line number Diff line change
    @@ -12,7 +12,7 @@ console.log("_twitterConsumerKey: %s and _twitterConsumerSecret %s", process.env
    function consumer() {
    return new oauth.OAuth(
    "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token",
    _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://rabbit.local/sessions/callback", "HMAC-SHA1");
    _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://your.domain/sessions/callback", "HMAC-SHA1");
    }

    app.configure('development', function(){
  2. santosh79 created this gist Mar 3, 2012.
    74 changes: 74 additions & 0 deletions twitter-oauth.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,74 @@
    var express = require('express');
    var sys = require('util');
    var oauth = require('oauth');

    var app = express.createServer();

    var _twitterConsumerKey = process.env['TWITTER_CONSUMER_KEY'];
    var _twitterConsumerSecret = process.env['TWITTER_CONSUMER_SECRET'];

    console.log("_twitterConsumerKey: %s and _twitterConsumerSecret %s", process.env['TWITTER_CONSUMER_KEY'], process.env['TWITTER_CONSUMER_SECRET']);

    function consumer() {
    return new oauth.OAuth(
    "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token",
    _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://rabbit.local/sessions/callback", "HMAC-SHA1");
    }

    app.configure('development', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
    app.use(express.logger());
    app.use(express.cookieParser());
    app.use(express.session({
    secret: "secretkey"
    }));
    });

    app.dynamicHelpers({
    session: function(req, res){
    return req.session;
    }
    });

    app.get('/', function(req, res){
    res.send('Hello World');
    });

    app.get('/sessions/connect', function(req, res){
    consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
    if (error) {
    res.send("Error getting OAuth request token : " + sys.inspect(error), 500);
    } else {
    req.session.oauthRequestToken = oauthToken;
    req.session.oauthRequestTokenSecret = oauthTokenSecret;
    res.redirect("https://twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);
    }
    });
    });

    app.get('/sessions/callback', function(req, res){
    sys.puts(">>"+req.session.oauthRequestToken);
    sys.puts(">>"+req.session.oauthRequestTokenSecret);
    sys.puts(">>"+req.query.oauth_verifier);
    consumer().getOAuthAccessToken(req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(error, oauthAccessToken, oauthAccessTokenSecret, results) {
    if (error) {
    res.send("Error getting OAuth access token : " + sys.inspect(error) + "["+oauthAccessToken+"]"+ "["+oauthAccessTokenSecret+"]"+ "["+sys.inspect(results)+"]", 500);
    } else {
    req.session.oauthAccessToken = oauthAccessToken;
    req.session.oauthAccessTokenSecret = oauthAccessTokenSecret;
    // Right here is where we would write out some nice user stuff
    consumer().get("http://twitter.com/account/verify_credentials.json", req.session.oauthAccessToken, req.session.oauthAccessTokenSecret, function (error, data, response) {
    if (error) {
    res.send("Error getting twitter screen name : " + sys.inspect(error), 500);
    } else {
    console.log("data is %j", data);
    data = JSON.parse(data);
    req.session.twitterScreenName = data["screen_name"];
    res.send('You are signed in: ' + req.session.twitterScreenName)
    }
    });
    }
    });
    });

    app.listen(parseInt(process.env.PORT || 80));