如何使用Node,Express和Connect-auth通过Ajax在服务器端进行Facebook连接

时间:2011-10-20 09:26:19

标签: ajax facebook node.js express

我有一段看起来像这样的代码。

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连接,而无需重新加载页面。

0 个答案:

没有答案