我有一段看起来像这样的代码。
app.get('/auth/facebook', function( request, response ) {
if( request.session.user ){
response.render( 'index.jade' );
} else {
request.authenticate(['facebook'], function(error, authenticated) {
if( authenticated ) {
request.session.user = request.getAuthDetails().user;
response.writeHead(303, { 'Location': "/auth/facebook" });
}
});
}
});
如果会话中有用户,它将呈现页面,如果没有,它将从Facebook获取用户并将其存储在会话变量中并重新加载页面...并呈现它。它工作得很好。但是我希望通过AJAX触发这段代码并执行以下操作:
app.get('/auth/facebook', function( request, response ) {
response.contentType('application/json');
if( request.session.user ){
response.send(JSON.stringify({'authenticated':true}));
} else {
request.authenticate(['facebook'], function(error, authenticated) {
if( authenticated ) {
request.session.user = request.getAuthDetails().user;
response.writeHead(303, { 'Location': "/auth/facebook" });
} else {
response.send(JSON.stringify({'authenticated':false}));
}
});
}
});
但这不起作用。它说“发送后不能使用可变的头部API”并将其自身置于无限循环中,说“在将头部发送到客户端后无法呈现头部”。一遍又一遍。
我是以错误的方式来做这件事的吗?我希望我的服务器代码能够与Facebook连接,而无需重新加载页面。