File: twitter-streaming/node_modules/ntwitter/node_modules/oauth/examples/express-gdata/server.js

Recommend this page to a friend!
  Classes of Igor Escobar   Terminal Crossword   twitter-streaming/node_modules/ntwitter/node_modules/oauth/examples/express-gdata/server.js   Download  
File: twitter-streaming/node_modules/ntwitter/node_modules/oauth/examples/express-gdata/server.js
Role: Example script
Content type: text/plain
Description: Example script
Class: Terminal Crossword
Generate a crosswords board on a text console
Author: By
Last change:
Date: 2 years ago
Size: 4,969 bytes
 

Contents

Class file image Download
var express = require('express'), OAuth = require('oauth').OAuth, querystring = require('querystring'); // Setup the Express.js server var app = express.createServer(); app.use(express.logger()); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "skjghskdjfhbqigohqdiouk" })); // Home Page app.get('/', function(req, res){ if(!req.session.oauth_access_token) { res.redirect("/google_login"); } else { res.redirect("/google_contacts"); } }); // Request an OAuth Request Token, and redirects the user to authorize it app.get('/google_login', function(req, res) { var getRequestTokenUrl = "https://www.google.com/accounts/OAuthGetRequestToken"; // GData specifid: scopes that wa want access to var gdataScopes = [ querystring.escape("https://www.google.com/m8/feeds/"), querystring.escape("https://www.google.com/calendar/feeds/") ]; var oa = new OAuth(getRequestTokenUrl+"?scope="+gdataScopes.join('+'), "https://www.google.com/accounts/OAuthGetAccessToken", "anonymous", "anonymous", "1.0", "http://localhost:3000/google_cb"+( req.param('action') && req.param('action') != "" ? "?action="+querystring.escape(req.param('action')) : "" ), "HMAC-SHA1"); oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){ if(error) { console.log('error'); console.log(error); } else { // store the tokens in the session req.session.oa = oa; req.session.oauth_token = oauth_token; req.session.oauth_token_secret = oauth_token_secret; // redirect the user to authorize the token res.redirect("https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token="+oauth_token); } }) }); // Callback for the authorization page app.get('/google_cb', function(req, res) { // get the OAuth access token with the 'oauth_verifier' that we received var oa = new OAuth(req.session.oa._requestUrl, req.session.oa._accessUrl, req.session.oa._consumerKey, req.session.oa._consumerSecret, req.session.oa._version, req.session.oa._authorize_callback, req.session.oa._signatureMethod); console.log(oa); oa.getOAuthAccessToken( req.session.oauth_token, req.session.oauth_token_secret, req.param('oauth_verifier'), function(error, oauth_access_token, oauth_access_token_secret, results2) { if(error) { console.log('error'); console.log(error); } else { // store the access token in the session req.session.oauth_access_token = oauth_access_token; req.session.oauth_access_token_secret = oauth_access_token_secret; res.redirect((req.param('action') && req.param('action') != "") ? req.param('action') : "/google_contacts"); } }); }); function require_google_login(req, res, next) { if(!req.session.oauth_access_token) { res.redirect("/google_login?action="+querystring.escape(req.originalUrl)); return; } next(); }; app.get('/google_contacts', require_google_login, function(req, res) { var oa = new OAuth(req.session.oa._requestUrl, req.session.oa._accessUrl, req.session.oa._consumerKey, req.session.oa._consumerSecret, req.session.oa._version, req.session.oa._authorize_callback, req.session.oa._signatureMethod); console.log(oa); // Example using GData API v3 // GData Specific Header oa._headers['GData-Version'] = '3.0'; oa.getProtectedResource( "https://www.google.com/m8/feeds/contacts/default/full?alt=json", "GET", req.session.oauth_access_token, req.session.oauth_access_token_secret, function (error, data, response) { var feed = JSON.parse(data); res.render('google_contacts.ejs', { locals: { feed: feed } }); }); }); app.get('/google_calendars', require_google_login, function(req, res) { var oa = new OAuth(req.session.oa._requestUrl, req.session.oa._accessUrl, req.session.oa._consumerKey, req.session.oa._consumerSecret, req.session.oa._version, req.session.oa._authorize_callback, req.session.oa._signatureMethod); // Example using GData API v2 // GData Specific Header oa._headers['GData-Version'] = '2'; oa.getProtectedResource( "https://www.google.com/calendar/feeds/default/allcalendars/full?alt=jsonc", "GET", req.session.oauth_access_token, req.session.oauth_access_token_secret, function (error, data, response) { var feed = JSON.parse(data); res.render('google_calendars.ejs', { locals: { feed: feed } }); }); }); app.listen(3000); console.log("listening on http://localhost:3000");