0

我正在構建一個Chrome擴展,它將與我正在構建的Node.js/Restify Web服務進行交互。我使用passport.js爲用戶創建了一對API端點,並通過Facebook進行身份驗證。但是,一旦我運行了Chrome擴展件,我意識到在嘗試通過ajax請求我的Facebook auth端點時存在各種CORS問題。在Chrome擴展中使用Facebook進行身份驗證的最佳方式是什麼?

在網上查看問題後,它看起來像大多數人在客戶端進行Facebook身份驗證。現在我想,也許我會重寫擴展以使用客戶端Facebook身份驗證,並讓所有其他(非Facebook)通過我的Restify API。

我的Facebook的身份驗證的端點是這樣的:

server.get('/facebook_login/callback', auth.authenticate({ 
    failureRedirect: '/error', 
    scope: [ 
    auth.fbPermissions.email, 
    auth.fbPermissions.publicProfile 
    ] 
}), function(req, res, next) { 
    res.redirect('/', next); 
}); 

server.get('/facebook_login', auth.authenticate({ 
    failureRedirect: '/error', 
    scope: [ 
    auth.fbPermissions.email, 
    auth.fbPermissions.publicProfile 
    ] 
})); 

而且在擴展中唯一的JavaScript代碼是這樣的:

document.addEventListener('DOMContentLoaded', function() { 
    window.open("http://localhost:8080/facebook_login"); 
}); 

如果有人已經得到了上述兩種方法的工作,讓我知道。任何幫助表示讚賞!

+1

_「我意識到存在各種CORS問題」_你需要澄清你的意思。 CORS通常不是擴展的問題。另外,請查看'chrome.identity'。 – Xan

+0

@Xan在更改我的代碼以重現CORS錯誤之後,我意識到只要我在新窗口中打開登錄URL,我就不會再使用它們了。此外,'chrome.identity'看起來很有用,所以感謝你的建議。 –

回答

0

我能通過在新窗口中打開我的facebook_login頁面來獲得此工作。看起來我現在堅持使用服務器端Facebook登錄。

+1

明智:客戶端登錄更容易提取API密鑰。 – Xan

相關問題