Node.js 使用Passport进行Google身份验证
以下方法介绍了如何在Node.js中使用Passport进行Google身份验证。身份验证基本上是在向用户授予访问网站或服务之前对用户进行验证。使用Google帐户进行身份验证称为Google身份验证。我们可以使用Google在其开发者门户上提供的OAuth API进行Google身份验证。
创建Node项目并安装模块:
步骤1: 使用以下命令创建Node项目。
npm init
按住回车键并在终端行中相应地输入“是/否”。
步骤2: 安装所需模块。
npm install express passport passport-google-oauth2 cookie-session
步骤3: 创建两个文件 index.js 和 passport.js
项目结构:
步骤4: 创建基本服务器。
index.js
const express = require('express');
const app = express();
app.get('/' , (req , res) => {
res.send("<h1>GeeksForGeeks</h1>");
});
app.listen(4000 , () => {
console.log("Server running on port 4000");
});
输出:
步骤5: 现在前往 google平台 并生成您的凭据。
步骤6: 创建登录功能。
passport.js
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth2').Strategy;
passport.serializeUser((user , done) => {
done(null , user);
})
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(new GoogleStrategy({
clientID:"YOUR ID", // Your Credentials here.
clientSecret:"YOUR SECRET", // Your Credentials here.
callbackURL:"http://localhost:4000/auth/callback",
passReqToCallback:true
},
function(request, accessToken, refreshToken, profile, done) {
return done(null, profile);
}
));
index.js
const express = require('express');
const app = express();
const passport = require('passport');
const cookieSession = require('cookie-session');
require('./passport');
app.use(cookieSession({
name: 'google-auth-session',
keys: ['key1', 'key2']
}));
app.use(passport.initialize());
app.use(passport.session());
app.get('/', (req, res) => {
res.send("<button><a href='/auth'>Login With Google</a></button>")
});
// Auth
app.get('/auth' , passport.authenticate('google', { scope:
[ 'email', 'profile' ]
}));
// Auth Callback
app.get( '/auth/callback',
passport.authenticate( 'google', {
successRedirect: '/auth/callback/success',
failureRedirect: '/auth/callback/failure'
}));
// Success
app.get('/auth/callback/success' , (req , res) => {
if(!req.user)
res.redirect('/auth/callback/failure');
res.send("Welcome " + req.user.email);
});
// failure
app.get('/auth/callback/failure' , (req , res) => {
res.send("Error");
})
app.listen(4000 , () => {
console.log("Server Running on port 4000");
});
运行应用程序的步骤:
使用以下命令从项目的根目录运行应用程序:
node index.js
输出: