Short:
Привет,
Я хочу сделать единый вход с помощью экспресс-паспорта nodejs google oauth
Может быть, у кого-то есть хороший учебник или пример кода
Long:
В основном:
Пользователь заходит на мой сайт. Страница входа www.mysite.com/login
Нажмите «Войти через Google»
Паспорт работает, и пользователь вошел в систему
Теперь до этого все работает нормально и
Я вошел в систему пользователя, и они в сеансе;
Я могу получить доступ с req.user
, но:
- Пользователь переходит на другой сайт www.mysite2.com/home
Он должен быть уже авторизован. Но он не работает.
Также, если я снова нажму «Войти через Google» на странице входа www.mysite.com/login
страница входа в систему Google снова появляется и просит пользователя ввести пароль электронной почты.
Я ожидаю, что Google будет знать, что они уже аутентифицировали пользователя
и отправьте мне код (/ auth / google / callback? code = 4 / SwCR3zt89 ...)
к моему маршруту обратного вызова (www.mysite.com/auth/google/callback), например.
Вот часть кода:
server.js
var express = require('express');
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
passport.use(new GoogleStrategy({
clientID: configService.getGoogleClientId(),
clientSecret: configService.getGoogleClientSecret(),
callbackURL: "http://localhost:3000/auth/google/callback"
},
function (accessToken, refreshToken, profile, done) {
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
var app = express();
app.use(session({
secret: configService.getSessionSecret(),
resave: false,
saveUninitialized: false,
//cookie: { secure: true }
}))
app.use(passport.initialize());
app.use(passport.session());
app.get('/auth/google',
passport.authenticate('google', { scope:
['https://www.googleapis.com/auth/plus.login'] }));
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function (req, res) {
res.redirect('/home');
});
login.html
<html>
<head></head>
<body>
<a href="/auth/google">Sign In with Google</a>
</body>
</html>