Node.js 使用React for Facebook登录实现Passport.js时遇到问题
我在使用Passport.js和React登录Facebook时遇到问题 我能够设置一切,从使用Express和Node.js的服务器到使用React.js的客户端。在客户端,我创建了一个登录按钮组件,它打开一个新窗口,然后点击我的服务器,在第二个窗口内将我登录到Facebook。现在的问题是如何正确地将信息路由回原始窗口并更新状态 这是我的代码: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() {
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,并且由于工作流是相同的,所以我能够根据我的需要调整它。
希望它也能帮助你