如何将facebook身份验证添加到我的反应应用程序?

时间:2017-12-18 03:26:07

标签: node.js reactjs express

我使用express作为后端。我在后端实现了facebook身份验证。

console.log({a, b, c});

);

现在我想通过我的反应应用程序来调用它,这样当用户登陆主页时,首先他应该通过facebook进行身份验证,然后才能看到主页。我怎么能这样做?

我尝试使用react-router,但我无法理解如何使用react-router调用后端。 我还使用fetch命令获取/ login / facebook:

defmodule Sample do
    # 1. module attribute(available only inside module)
    @private_const_value 1
    # 2. function as constant(possible in any rate)
    def const_value_func, do: 3
    # 3. ideal form(but compile error)
    public_const_value = 2
end

defmodule Client do
    def foo() do
        IO.puts "CONST = #{Sample.@private_const_value}" # compile error
        IO.puts "CONST = #{Sample.const_value_func}"
        IO.puts "CONST = #{Sample.public_const_value}" # compile error
    end
end

但它给了我CORS错误。

我的反应应用程序位于127.0.0.1:3000,快递服务器位于127.0.0.1:3001。

2 个答案:

答案 0 :(得分:1)

如果此问题仅在开发模式下,那么Daniel的回答是正确的。

无论如何,我建议不要直接从:3000应用程序调用:3001 api。这就是我要做的事。

我将按如下方式编辑提取调用,

componentDidMount(){
    fetch("/login/facebook");
}

此调用将由后端接收,后端为反应应用程序提供服务。 现在有三个个案,

案例1 :您的文件服务应用程序将具有可以将请求转发到API的代理方法。例如,请阅读here

案例2 这是我的推荐方法。我只需在:3000服务器中编写身份验证逻辑,并仅使用:3001 API来处理应用程序的业务逻辑。

案例3 :如果你有一个后端应用程序(:3000),比如使用expressJs编写,你可以将请求转发到:3001 API。这是一个示例代码,

client.send({
    method: req.method,
    path: req.url,
    data: req.body,
    params: req.params
}).then( (response) => {
    // Something
}).catch( (err) => {
    // Handle error
});

此处客户端是一个使用request模块进行HTTP调用的模块。 您可以将上述调用实现为快速中间件,以将其用于所有HTTP调用。

答案 1 :(得分:0)

有几种选择:

如果您使用的是webpack dev服务器,则可以为api设置代理。见here

您可以在开发期间临时禁用cors验证。见here