единый вход с помощью Google Auth Passport - PullRequest
0 голосов
/ 30 августа 2018

Short:

Привет, Я хочу сделать единый вход с помощью экспресс-паспорта nodejs google oauth

Может быть, у кого-то есть хороший учебник или пример кода

Long:

В основном:

  1. Пользователь заходит на мой сайт. Страница входа www.mysite.com/login

  2. Нажмите «Войти через Google»

  3. Паспорт работает, и пользователь вошел в систему

Теперь до этого все работает нормально и Я вошел в систему пользователя, и они в сеансе; Я могу получить доступ с req.user, но:

  1. Пользователь переходит на другой сайт 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...