Войти с помощью Google с Passportjs - PullRequest
0 голосов
/ 05 апреля 2020

Я создал API для приложения с nodejs + passport, используя passport-google-oauth20

, это стратегия паспорта, которую я использую


passport.use(new GoogleStrategy({
    clientID: config.google.clientId,
    clientSecret: config.google.clientSecret,
    callbackURL: config.google.redirectUri
},
function (accessToken, refreshToken, profile, cb) {
    User.findOne({ googleId: profile.id }).exec(function (err, user) {
        if (err) return console.log('ERROR ' + err)
        if (user) {
            console.log('User authenticated ' + `${user.email}`.blue)
            return cb(err, user)
        } else {
            let newUser = new User({
                googleId: profile.id,
                email: profile.emails[0].value,
                name: profile.name.givenName,
                surname: profile.name.familyName,
                picture: profile.photos[0].value
            })
            newUser.generateToken()
            newUser.save(function (err, obj) {
                if (err) {
                    console.log('Error saving a new user: '.red + err)
                }
                console.log('New user ' + `${obj.email}`.blue)
                return cb(err, obj)
            })
        }
    })
}))

, и это маршруты, которые войдите в систему пользователя

    router
        .route('/auth/google')
        .get(passport.authenticate('google', { scope: ['profile', 'email'] }))

    router
        .route('/auth/google/callback')
        .get(
            passport.authenticate('google', { failureRedirect: '/auth' }),
            (req, res) => {
                return res.send(sanitize.clean(req.user))
            }
        )

Однако теперь я создаю интерфейс с флаттером, и я попытался пройти аутентификацию с помощью Google во встроенном браузере, и я обнаружил, что Google отключил их

Как я могу аутентифицироваться с помощью Google из приложения, но все еще подключая свой бэкэнд?

...