passeport google oauth sur localhost
Je suis tout à fait nouveau à l'aide de passeport pour l'authentification sur le nœud, d'où le lot de fragments de code
mon serveur est configuré comme :
var router = require('./app/config/routes');
var googleStrategy = require('./app/config/passport');
var session = require("express-session");
var passport = require('passport');
app.use(session({secret : '<secret-key>'}));
app.use(passport.initialize());
app.use(passport.session());
googleStrategy(passport);
mes itinéraires sont configurés en tant que
module.exports = function(app, passport) {
app.get('/auth/google', function() {
passport.authenticate('google', {scope: ['profile', 'email']});
});
app.get('/auth/google/callback', function() {
passport.authenticate('google', {
successRedirect: '/profile',
failureRedirect: '/fail'
});
});
.... ALSO configured /profile and /fail
};
mon passeport est configuré comme
passport.serializeUser(function(user, callback){
console.log('serializing user.');
callback(null, user);
});
passport.deserializeUser(function(user, callback){
console.log('deserialize user.');
callback(null, user);
});
var processRequest = function(token, refreshToken, profile, callback){
process.nextTick(function(){
console.log('id : '+ profile.id);
console.log('name :'+ profile.displayName);
console.log('email :' + profile.emails);
console.log('token : '+ token);
});
};
passport.use(new GoogleStrategy({
clientID: 'client ID',
clientSecret : 'client SECRET',
callbackURL : 'http://127.0.0.1:8080/auth/google/callback',
realm : 'http://127.0.0.1:8080'
}, processRequest));
Problème : sur va /auth/google
, je n'ai jamais eu un écran de confirmation. Ce doit être, je regarde?
Mise à jour :
modifier l'itinéraire à la configuration illustrée ci-dessous fait le travail.
app.get('/auth/google',
passport.authenticate('google', {scope: ['profile', 'email']})
);
app.get('/auth/google/callback',
passport.authenticate('google', {
successRedirect: '/profile',
failureRedirect: '/fail'
})
);
source d'informationauteur frictionlesspulley
Vous devez vous connecter pour publier un commentaire.
Actuellement protocole OAUTH2 pour l'authentification et autherization est bien pris en charge par google.Donc, il est mieux d'utiliser le même . Voici de google documents .Utilisation passeport de-google-oauth' module . Ici est la mise en œuvre.Ce devrait être l'application des objets de configuration , reportez-vous également que oauth2strategy objet est utilisé à partir de passeport-google oauth module , vérifiez aussi les champs d'application dans l'app.obtenez de l'itinéraire de l'enregistrement .
Mais avant de créer une nouvelle stratégie allez à google developer console et obtenir clientID et secret . Voici les étapes
puis accédez à des informations d'identification(ci-dessous Api), puis cliquez sur Créer de Nouveaux Client Id , et d'enregistrer les domaines et de rappel pour votre application(configurer le nom de domaine localhost ) , voici sa photo !
5.Alors u obtiendrez votre nouvel IDENTIFIANT et le secret . Les utiliser pour créer la nouvelle Stratégie
6.maintenant sérialiser et désérialiser
exécuter le serveur et aller à localhost:8080/auth/google (ne pas utiliser 127.0.0.1:8080 au lieu de locahost ) .Ce devrait être pour la faire fonctionner 🙂
[Autres liens utiles:
Découvrez le premier commentaire par kvcrawford sur le repo du module dans cette page
Passeport-google est un autre populaire module qui est utilisé pour fournir une connexion à l'aide de google , c'est une sorte de dépassée aujourd'hui , voici le lien à l'égard de ses récents problèmes ]
Dans la plupart des exemples sur le web, le code de routage est fait comme ceci:
Selon la Référence Expresseles rappels de la
app.get
méthode sont donnés trois arguments,request
response
et "suivant". Cela signifie que, la méthode d'authentification dans l'exemple ci-dessus renvoie un objet de fonction et il est exécuté avec trois argumentsrequest
response
et "suivant".Donc, si vous voulez faire de l'authentification dans la fonction de rappel de la
app.get
méthode comme ceci:ensuite, vous devez écrire:
Je suis d'accord avec vous @Seiya mais je voudrais ajouter une redirection