1. npm install --save passport
2. npm install --save passport passport-google-oauth20
3. cria um arquivo com as keys pegas em: https://console.developers.google.com
(keys.js)
module.exports =
{
googleClientID = '1022234683095-d5mf224j8tuugsmm01roaoode7p0g390.apps.googleusercontent.com',
googleClientSecret = '0t14R-T0hEmv-7QiNIzZTToP'
};
4.
(index.js)
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('./config/keys');
passport.use(new GoogleStrategy(
{
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback'
}, (accessToken,refreshToken,profile,done) =>
{
User.findOne({ googleId: profile.id}).then((existingUser) =>
{
if(existingUser)
{
//ja possui na base
done(null,existingUser);
}
else{
new User({googleId: profile.id}).save().then(user=> done(null,user));
}
});
// console.log('acesstoken',accessToken);
// console.log('refreshToken',refreshToken);
// console.log('profile',profile);
})
);
app.get('/auth/google',passport.authenticate('google',{
scope: ['profile','email']
}));
5. ao tentar entrar na pagina, receberá um erro com uma url do googe, tem que copiar ela, exemplo:
https://console.developers.google.com/apis/credentials/oauthclient/1022234683095-d5mf224j8tuugsmm01roaoode7p0g390.apps.googleusercontent.com?project=1022234683095
No projeto haverá a opção: uris de redirecionamento autorizado, tem que adicionar a url que escolheu no callbackURL, neste exemplo:
localhost:5000/auth/google/callback
quando der refresh na pagina de erro anterior, tem que abrir a janelinha do google
6. agora quando clicar no usuario pra logar com o goole, ele vai redirecionar para url de callback
entao tem de ter esse endereco
app.get('/auth/google/callback',passport.authenticate('google'));
7. precisa serealizar o usuario pra cookie e desializar qnd for dar logout
passport.serializeUser((user,done)=>{
done(null,user.id);
});
passport.deserializeUser((id,done)=>{
User.findById(id).then(user => {
done(null,user);
});
});
8. instalar nom cookie
npm install --save cookie-session
9. adicionar ao index.js
const cookieSession = require('cookie-session');
const passport = require('passport');
app.use(
cookieSession({
maxAge: 30*24*60*60*1000,
keys: [keys.cookieKey]
})
);