Я не могу аутентифицировать пользователя со стратегией паспорта в узле js через логин LinkedIn - PullRequest
0 голосов
/ 11 февраля 2019

Я использую Passport.js для проверки подлинности linkedin и работает довольно хорошо.Теперь я хочу сохранить cookie, если пользователь уже существует в базе данных.

На моем веб-сайте я использовал googlee, linkedin, github authenticndicattion.
В аутентификации google я использовал ту же логику, если пользовательуже существует, я хочу сохранить куки.Для этого Мой код

router.get(
    '/auth/google/callback',
    passportGoogle.authenticate('google', {
        failureRedirect: '/login',
    }),
    (req, res) => {
        const nameFirst = req.user.profile._json.displayName;
        const email = req.user.profile.emails[0].value;
        const id = req.user.profile.id;
        const user = new User({
            user_token: id,
            name: nameFirst,
            email: email,
            provider: 'Google',
            dateSent: Date.now(),
        });
        User.find({ email: email }, (err, docs) => {
            if (docs.length) {
                req.session.token = req.user.token;
                res.redirect('/dashboard');
            } else {
                user
                    .save()
                    .then(user => {
                        res.redirect('/');
                    })
                    .catch(err => {
                        console.log(err);
                    });
            }
        });
    }
);

В Google Autho все работает нормально, но для входа в систему с помощью google или github я не могу сохранить cookie, а также не отображается ошибка или исключение.Я устал, но я не могу исправить эти ошибки.Пожалуйста, помогите мне решить эту проблему. Спасибо заранее

За Linkedin

router.get(
    '/auth/linkedin/callback',
    passportLinkedIn.authenticate('linkedin', { failureRedirect: '/' }),
    (req, res) => {
        const nameFirst = req.user.profile._json.firstName;
        const email = req.user.profile._json.emailAddress;
        const id = req.user.profile.id;
        const user = new User({
            user_token: id,
            name: nameFirst,
            email: email,
            provider: 'linkedIn',
            dateSent: Date.now(),
        });
        User.find({ email: email }, (err, docs) => {
            if (docs.length) {
                console.log('coo');
                console.log(req.user.accessToken);
                req.session.token = req.accessToken;
                res.redirect('/dashboard');
            } else {
                user
                    .save()
                    .then(user => {
                        res.redirect('/');
                    })
                    .catch(err => {
                        console.log(err);
                    });
            }
        });
    }
);

Я сохранил cookie в этой строке req.session.token = req.accessToken;

...