我有一个angularjs和node,expressjs应用程序。当我试图实现facebook登录时(passport)。 但问题出在我尝试的时候 -
app.get('/auth/facebook',passport.authenticate('facebook'));
app.get('/auth/facebook/callback',passport.authenticate('facebook',
{
successRedirect: '/profile',
failureRedirect: '/'
}));
,配置如下 -
passport.use(new FacebookStrategy({
clientID: 'xxxx',
clientSecret: 'xxxx',
callbackURL:'http://campustop.in/auth/facebook/callback'
},
function(accessToken,refreshToken,profile,done){
console.log(profile);
}
));
所以,问题在于我的客户端,如果我尝试 -
<a href="/auth/facebook">Login with Facebook</a>
然后angularjs $ routeProvider首先捕获此路由并显示空白布局,因为没有使用此URL指定模板或控制器。所以,这个链接永远不会到达我在服务器中的快速路由配置中的路由功能。 但是,当我直接在浏览器中打开此URL时,它会到达服务器,但之后它不会被重定向到任何页面。它只是停留在那里,网络选项卡中显示以下响应 -
Request URL:https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%3A%2F%2Fcampustop.in%2Fauth%2Ffacebook%2Fcallback&client_id=1440645942863962
Status Code:302 forced.302
以及网络标签中的一些响应标头。您可以转到http://campustop.in/auth/facebook
查看它们答案 0 :(得分:9)
我通过添加target =&#34; _self&#34;解决了这个问题。像这样的链接标签。
<a href="/auth/google" target="_self">Sign in with Google</a>
当您执行此操作时,角度路由提供程序会忽略它并允许请求命中您的服务器。