问题描述
感谢您花时间阅读本文。我是通过 Node.js 使用 Google-passport 策略的新手,但需要为我正在从事的项目实施 Google 身份验证。我尝试了多种方法来完成这项工作,但没有成功。当我尝试访问我的回调 URI 时,绝对没有任何反应。该页面只是重新加载,而我没有被重定向到 Google 登录屏幕。
谁能帮我理解我做错了什么。
预先感谢您的帮助!
服务器:
require("dotenv").config();
const express = require("express");
const server = express();
const cors = require("cors");
const passport = require("passport");
const cookieSession = require("cookie-session");
require("./passport");
const morgan = require("morgan");
server.use(cors());
server.use(morgan("dev"));
const bodyParser = require("body-parser");
server.use(bodyParser.json());
server.use(
cookieSession({
name: "customer-session",keys: ["key1","key2"],})
);
server.use(passport.initialize());
server.use(passport.session());
const path = require("path");
server.use(express.static(path.join(__dirname,"build")));
server.use("/api",require("./routes"));
server.use((req,res,next) => {
res.sendFile(path.join(__dirname,"build","index.html"));
});
const { client } = require("./db");
server.get(
"/google",passport.authenticate("google",{ scope: ["profile","email"] })
);
server.get(
"/google/callback",{ failureRedirect: "/Failed" }),function (req,res) {
res.redirect("/good");
}
);
const PORT = process.env.PORT || 5000;
server.listen(PORT,async () => {
console.log(`Server is running on ${PORT}!`);
try {
await client.connect();
console.log("Database is open for business!");
} catch (error) {
console.error("Database is closed for repairs!\n",error);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.1.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.1.1/umd/react-dom.production.min.js"></script>
const passport = require("passport");
const { GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET } = process.env;
const GoogleStrategy = require("passport-google-oauth20").Strategy;
passport.serializeUser(function (user,done) {
done(null,user);
});
passport.deserializeUser(function (user,user);
});
passport.use(
new GoogleStrategy(
{
clientID: GOOGLE_CLIENT_ID,clientSecret: GOOGLE_CLIENT_SECRET,callbackURL: "http://localhost:3000/google/callback",},function (accesstoken,refreshToken,profile,done) {
return done(null,user);
}
)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.1.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.1.1/umd/react-dom.production.min.js"></script>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)