Node.js 使用React for Facebook登录实现Passport.js时遇到问题

Node.js 使用React for Facebook登录实现Passport.js时遇到问题,node.js,reactjs,express,passport.js,passport-facebook,Node.js,Reactjs,Express,Passport.js,Passport Facebook,我在使用Passport.js和React登录Facebook时遇到问题 我能够设置一切,从使用Express和Node.js的服务器到使用React.js的客户端。在客户端,我创建了一个登录按钮组件,它打开一个新窗口,然后点击我的服务器,在第二个窗口内将我登录到Facebook。现在的问题是如何正确地将信息路由回原始窗口并更新状态 这是我的代码: import React, { useState } from "react"; function Facebook() {

我在使用Passport.js和React登录Facebook时遇到问题

我能够设置一切,从使用Express和Node.js的服务器到使用React.js的客户端。在客户端,我创建了一个登录按钮组件,它打开一个新窗口,然后点击我的服务器,在第二个窗口内将我登录到Facebook。现在的问题是如何正确地将信息路由回原始窗口并更新状态

这是我的代码:

import React, { useState } from "react";

function Facebook() {
  const [state, setState] = useState({
    isAuth: false,
    user: "",
    token: "",
  });

  let content = !state.isAuth ? (
    <>
      <div>
        <a href="http://localhost:4000/facebook">
          <button
            style={{
              display: "inline-block",
              fontSize: "14px",
              padding: "13px 30px 15px 44px",
              background: "#3A5A97",
              color: "#fff",
              textShadow: "0 -1px 0 rgba(0,0,20,.4)",
              textDecoration: "none",
              lineHeight: "1",
              position: "relative",
              borderRadius: "5px",
            }}
          >
            Login with Facebook
          </button>
        </a>
      </div>
    </>
  ) : (
    <>
      <div>
        <button onClick={handleLogout}>logout</button>
      </div>
    </>
  );

  return <>{content}</>;
}

export default Facebook;

import React,{useState}来自“React”;
函数Facebook(){
常量[状态,设置状态]=使用状态({
伊萨思:错,
用户:“”,
令牌:“”,
});
让内容=!state.isAuth(
) : (
注销
);
返回{content};
}
导出默认Facebook;
这是我的Express服务器(我取出了很多对您的视图不必要的东西):

const express=require(“express”);
常量app=express();
常数端口=4000;
const passport=需要(“护照”);
const Strategy=require(“护照”)。策略;
const cors=要求(“cors”);
const jwt=require(“jsonwebtoken”);
passport.use(
新战略(
{
客户ID:“,
客户机密:“,
//回调URL:“http://localhost:3000/auth/facebook/callback",
callbackURL:“/auth/facebook/callback”,
profileFields:[“id”、“displayName”、“email”、“name”],
启用证明:正确,
},
函数(accessToken、refreshToken、配置文件、cb){
//将配置文件保存到数据库中
//如果以后需要调用facebook API,请保存accessToken和refreshToken

console.log(accessToken,“我遇到了同样的问题,但是实现了passport蒸汽策略。我发现了如何使用passport和react设置Twitter OAUth,并且由于工作流是相同的,所以我能够根据我的需要调整它。 希望它也能帮助你