2013-05-19 49 views
5

在护照我有Twitter认证。一切都很好,登录明智。我有这样的代码重新登录用户与passport.js twitter登录

app.get('/auth/twitter', function (req, res) { 
    if (req.user) { 
     return res.redirect('/'); 
    } 
    return passport.authenticate('twitter')(req, res); 
}); 

因此,如果用户已经登录到我的网站与Twitter只是重定向回(可能给最终的消息)。一旦他们注销了该网站,并且他们再次点击与twitter一起登录,它就会再次将它们带到Twitter授权应用页面。它不应该。当我查看其他网站时,它从不要求我再次授权应用程序。如果我查看我的twitter个人资料的授权应用程序部分,我会看到我正在开发的应用程序。

为什么我的应用程序在我已经提供的时候一直要求授权?我怎样才能改变这一点(我在数据库中存储令牌和token_secret)?谢谢您的帮助。

回答

6

我最近在我的开发系统中遇到了同样的问题,但在生产中却没有。

我追溯到Twitter上的应用程序设置的问题。当我访问Twitter Dev网站并开始仔细比较我为我的DEV和PROD系统所做的选择时,我注意到“我的应用程序”的“设置”选项卡上的差异,其中“允许此应用程序用于使用Twitter登录“复选框为而不是为我的DEV选中,但为我的PROD系统。

下的应用程序设置选项卡上的复选框微小印刷说:

启用后您的应用程序可用于“登录与Twitter”。当禁用应用程序将无法使用/ OAuth的/验证和它的任何请求,而不是将用户重定向到/的OAuth /授权

authorize vs authenticate之间的差异是不是术语清晰,但需要授权确认每次验证时“记住”用户的选择。

我做了这一个改变后,我的DEV系统停止问我要我每次测试通过Twitter登录时授权相关的确认...

+0

好人。谢谢您的帮助! –