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

相关问题