Passport-Google-OAuth20 回调失败

问题描述

感谢您花时间阅读本文。我是通过 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>

Google Passport 策略文件

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...