0
我正在制作一个使用Yelp API和MEAN堆栈的场地搜索应用程序。在使用Passport JS登录Facebook之后,您可以添加和移除自己去场馆。在Node/Express中Passport JS登录后没有刷新页面和搜索?
在这种情况下用户输入的搜索,结果页面上显示(为未认证用户),登录并重定向到了主页,搜索结果被刷新。
我想的是,用户不必重新搜索。所以基本上没有刷新页面,也没有在Angular中刷新$ scope.venues,这是一个持有所有场地数据的对象。
例如:
- 我搜索阿姆斯特丹
- 我得到的所有场馆的名单在阿姆斯特丹
- 我登录
- 阿姆斯特丹的搜索结果仍然存在
我该怎么做?
这些都是在节点/快递护照JS路线:
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var session = require('express-session');
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(id, done) {
done(null, id);
});
app.get('/auth/facebook', passport.authenticate('facebook'));
//Authenticate with Passport when hitting this route
app.get('/auth/facebook/callback', passport.authenticate('facebook', {
//Handle callback after successfully authenticated woth Facebook
successRedirect: '#/reload/' + searchQuery,
failureRedirect: '/error'
}));
这是我在角:
angular.module("popperooApp", ['ngRoute'])
.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "list.html",
controller: "ListController"
}).when("/reload/:query", {
templateUrl: "list.html",
controller: "ReloadController"
})
.otherwise({
redirectTo: "/"
});
})
.service("Venues", function($http) {
this.getVenues = function(location) {
var url = "search/" + location;
return $http.get(url);
};
})
.controller('ListController', function($scope, Venues) {
$scope.searchLocation = function(location) {
Venues.getVenues(location)
.then(function(response) {
$scope.venues = response.data;
}, function(response) {
alert("Error retrieving venues");
console.log(response);
});
};
})
.controller('ReloadController', function($scope,Venues,$routeParams){
Venues.getVenues($routeParams.query)
.then(function(response){
$scope.venues = response.data;
}, function(response){
alert("Error retrieving venues");
console.log(response);
});
})
我应该存储在会话MongoDB的数据库?我不应该在Angular中重定向到'/'路线并进行自定义吗?
感谢您的帮助!
谢谢!我尝试使用$ routeParams与新的ReloadController,但得到以下错误:FacebookTokenError:此授权码已被使用。可能是什么问题呢? – chemook78