我正在使用 Node 开发简单的 Web 应用程序,并使用 Facebook 身份验证进行反应。我还遵循了一些有关该主题的教程,但在这些实现中,客户端和后端位于同一服务器上。在这里,我的后端服务器在 localhost:5000 上运行,并在 localhost:3000 上运行应用程序。在react package.json中有到后端的代理,因此客户端知道如何调用api。
\n\n当我单击“使用 Facebook 登录”按钮时,我将重定向到 Facebook 页面,在其中我授权应用程序并接收我的客户端应用程序配置文件 ID 和其他请求的用户信息。然而,当我将用户信息发送到后端服务器时,我可以在控制台中看到以下错误:
\n\n\n\n\n跨源请求被阻止:同源策略不允许读取远程资源https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A5000%2Fapi%2Fauth%2Ffacebook% 2Fcallback&client_id=1617633901657669。(原因:CORS 标头 \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 丢失)。
\n
下面你可以看到:
\n\n\n\n\n类型错误:尝试获取资源时出现网络错误。\n [了解更多]
\n
Facebook 应用程序设置:
\n\n\n\nOAuth 路由器:
\n\nconst router = require(\'express\').Router();\nconst passport = require(\'../config/facebook-passport\');\n\nrouter.get(\'/facebook\', passport.authenticate(\'facebook\'));\n\nrouter.get(\'/facebook/callback\',\n passport.authenticate(\'facebook\', { failureRedirect: \'/login\' }),\n function(req, res) {\n console.log(\'Successful authentication, redirect home\');\n res.redirect(\'/\');\n });\n\nmodule.exports = router;\nRun Code Online (Sandbox Code Playgroud)\n\n护照脸书:
\n\nconst passport = require(\'passport\');\nconst …Run Code Online (Sandbox Code Playgroud) node.js facebook-oauth reactjs passport-facebook passport.js