簡體   English   中英

Passport Facebook身份驗證不起作用

[英]Passport facebook authentication not working

我有一個nodeJS應用程序(快速),具有Facebook登錄名。 我使用的是password-facebook身份驗證,如此處password-facebook所述 幾周前我的登錄仍然可以正常工作,但是現在情況有所改變。 我不確定Facebook是否已更改某些內容,或者是否已更改。 我沒有涉及任何登錄代碼,因此我懷疑這是在Facebook的末尾。

這是我的驗證碼:

router.get('/', passport.authenticate('facebook'), function(req, res){
});

router.get('/auth/facebook/callback', passport.authenticate('facebook', {
  failureRedirect: '/' }),
  function(req, res) {
  res.redirect('/calendar');
});

基本上,我希望應用程序從應用程序的根目錄自動對用戶進行身份驗證,然后在身份驗證后重定向到/ calendar。

出現的症狀如下:如果我嘗試進入根目錄並且之前沒有使用Facebook登錄,那么它將帶我進入正常的Facebook登錄屏幕。 但隨后在該屏幕上,出現以下警告:

應用程序配置不允許使用給定的URL應用程序的設置不允許使用一個或多個給定的URL。 它必須與網站URL或Canvas URL匹配,或者域必須是該應用程序域之一的子域。

我檢查了與此相關的所有問題,這似乎是因為我沒有在facebook應用程序配置中正確配置應用程序域和網站url。 但它們應該都很好:應用程序域:localhost,站點URL: http:// localhost:3000 /

所以我不知道為什么它抱怨它? 我沒有任何子域。 我唯一擁有的路由是:(/,/ calendar,/ calendar / events)。 最后的/ calendar / events路由是ajax路由。 無論如何,輸入我的Facebook憑據並登錄后,該頁面會將我重定向到一個空頁面,並帶有url:( https://www.facebook.com/login.php?login_attempt=1 )。 我打開開發人員的工具,並在其控制台中看到一條錯誤消息:

加載資源失敗:服務器響應狀態為500(內部服務器錯誤)

但是,現在我實際上已經登錄。因為如果現在進入root或/ calendar,它將需要我糾正頁面並顯示我已正確登錄。 因此,顯然登錄可以工作,但是重定向和允許的URL存在一些問題。 我只是似乎不知道什么,為什么。 我正在使用mongodDB作為數據庫。

我不知道為什么這仍然有效,但是我找到了解決方案。 以前,我已經將有效的OAuth重定向URI配置為http://127.0.0.1:3000/auth/facebook/callback ,並且運行良好。 現在,我將其更改為使用localhost而不是127.0.0.1:3000,這似乎可以解決問題。 現在一切都按預期工作,盡管我不知道為什么。 如果有人能夠清楚地告訴我原因,則將其標記為正確答案。

這可能是因為您在應用程序中注冊了哪個網站。 如果已將其注冊到http:// localhost:3000 / ,則應使用用於回調的域localhost。 如果您將其注冊為http://127.0.0.1:3000/,則應該使用127 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM