2013-05-19 46 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

好人。謝謝您的幫助! –