Updated foursquare routes for authorization. Now properly retrives the Oauth token when app is authorized

This commit is contained in:
Sahat Yalkabov
2013-11-19 17:09:05 -05:00
parent 7bef3acaf3
commit 58457a58e7
4 changed files with 38 additions and 19 deletions

10
app.js
View File

@ -6,6 +6,7 @@ var express = require('express'),
mongoose = require('mongoose'), mongoose = require('mongoose'),
passport = require('passport'); passport = require('passport');
// TODO: Add node-opencv!!
// App Configuration (API Keys, Database URI) // App Configuration (API Keys, Database URI)
var config = require('./config/config.json'); var config = require('./config/config.json');
@ -67,19 +68,16 @@ app.post('/contact', contact.postContact);
// Redirect the user to Facebook for authentication. When complete,
// Facebook will redirect the user back to the application at
app.get('/auth/facebook', passport.authenticate('facebook')); app.get('/auth/facebook', passport.authenticate('facebook'));
// Facebook will redirect the user to this URL after approval. Finish the
// authentication process by attempting to obtain an access token. If
// access was granted, the user will be logged in. Otherwise,
// authentication has failed.
app.get('/auth/facebook/callback', passport.authenticate('facebook', { app.get('/auth/facebook/callback', passport.authenticate('facebook', {
successRedirect: '/', successRedirect: '/',
failureRedirect: '/login' failureRedirect: '/login'
})); }));
app.get('/auth/foursquare', api.foursquareAuth);
app.get('/auth/foursquare/callback', api.foursquareCallback);
app.get('*', home.index); app.get('*', home.index);

View File

@ -1,5 +1,7 @@
var config = require('../config/config.json'); var config = require('../config/config.json');
var User = require('../models/User');
// API PROVIDERS SETUP // API PROVIDERS SETUP
var foursquare = require('node-foursquare')({ var foursquare = require('node-foursquare')({
secrets: { secrets: {
@ -9,26 +11,41 @@ var foursquare = require('node-foursquare')({
} }
}); });
var foursquareAccessToken = 'MY_FOURSQUARE_ACCESS_TOKEN';
exports.apiBrowser = function(req, res) { exports.apiBrowser = function(req, res) {
res.render('api'); res.render('api');
}; };
exports.foursquare = function(req, res) { exports.foursquare = function(req, res) {
res.render('api/foursquare', { res.render('api/foursquare', {
title: 'Foursquare API' title: 'Foursquare API'
}); });
}; };
/**
* GET /auth/foursquare
* Display Foursquare authentication screen
*/
exports.foursquareAuth = function(req, res) {
res.writeHead(303, { location: foursquare.getAuthClientRedirectUrl() });
res.end();
};
/**
* GET /auth/foursquare/callback
* Called when user presses Accept on the Foursquare authentication screen
*/
exports.foursquareCallback = function(req, res) { exports.foursquareCallback = function(req, res) {
foursquare.getAccessToken({ foursquare.getAccessToken({ code: req.query.code }, function(err, accessToken) {
code: req.query.code if (err) throw err;
},
function(err, accessToken) { console.log(accessToken);
if (err) {
res.send('An error was thrown: ' + err.message);
}
else {
// Save the accessToken and redirect.
}
});
}); });
};

View File

@ -12,6 +12,8 @@
"passport-google": "latest", "passport-google": "latest",
"underscore": "latest", "underscore": "latest",
"forever": "latest", "forever": "latest",
"node-foursquare": "latest" "node-foursquare": "latest",
"opencv": "latest"
} }
} }

View File

@ -2,3 +2,5 @@ extends ../layout
block content block content
h1 Foursquare API h1 Foursquare API
a.btn.btn-large.btn-primary(href='/auth/foursquare') Get Foursquare Token