Not sure if this is what you are looking for, I also am building a single page app. The redirect is unavoidable, but the user goes to twitter, authenticates and returns to the same page, but I load different data based on the users status, so the user either gets generic content or their saved content.
// in server.js
app.get('/', routes.index);
// in routes.js, required in server.js
exports.index = function(req, res){
if(req.loggedIn){
getData(function(data){
res.render('home', { data:, data })
});
} else {
res.render('home', { data: false })
}
};
getData() in my scenario does a few checks on the user to see their access level, then preloads content from our API and passes this into the template as JSON. Then when the app renders it just looks for the available JSON.