5

在护照中,我有 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 和 token_secret)?谢谢您的帮助。

4

1 回答 1

7

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

我的问题可以追溯到 Twitter 上的应用程序设置。当我访问Twitter Dev站点并开始仔细比较我为 DEV 和 PROD 系统所做的选择时,我注意到“我的应用程序”的“设置”选项卡上有一个不同之处,其中“允许此应用程序用于登录Twitter" 复选框没有为我的 DEV 选中,而是我的 PROD 系统选中。

应用程序设置选项卡上复选框下的小字显示:

启用后,您的应用程序可用于“使用 Twitter 登录”。禁用后,您的应用程序将无法使用 /oauth/authenticate 并且对它的任何请求都会将用户重定向到 /oauth/authorize

术语并不清楚授权与身份验证之间的区别,但授权每次都需要确认,而身份验证“记住”用户的选择。

在我进行了这个单一的更改之后,我的 DEV 系统在我每次测试通过 Twitter 登录时都不再要求我提供与授权相关的确认...

于 2013-05-19T22:51:29.277 回答