2017-03-21 1 views
1

J'ai développé une application en utilisant le framework MEAN et j'ai utilisé la stratégie google de passportjs pour m'authentifier. L'exécution locale fonctionne bien, mais quand je déploie la même chose à heroku, puisque Heroku exécute son application sur un port aléatoire. Je ne suis pas sûr de ce que l'URL de rappel google que je dois ajouter dans les "URI de redirection autorisées" de ma console google.Url de rappel de Google redonnant 400 lorsqu'elle est déployée en héro

passport.use(new GoogleStrategy({ 
    clientID: config.googleAuth.clientID, 
    clientSecret: config.googleAuth.clientSecret, 
    callbackURL: config.googleAuth.callbackURL 
}, function (token, refreshToken, profile, done) { 

    console.log(token, refreshToken, profile, done); 
    var query = { 
     'google.id' : profile.id 
    }; 
    User.findOne(query, function (err, user) { 
     if(user){ 
      console.log("User found in the database"); 
      done(null, user); 
     } 
     else{ 
      var newUser = new User; 
      newUser.displayName = profile.displayName; 
      newUser.image = profile.photos[0].value; 
      newUser.google = {}; 
      newUser.google.id = profile.id; 
      newUser.google.token = token; 
      newUser.save(); 
      console.log("saved user to the database"); 
      done(null, newUser); 
     } 
    }); 
})); 

Le code ci-dessus est ma stratégie google. J'utilise passport-google-oauth lib pour l'authentification.

module.exports = { 
    development: { 
     rootPath: rootPath, 
     db: 'xxx', 
     port: process.env.PORT || 3030, 
     googleAuth: { 
      clientID: 'xxx', 
      clientSecret: 'xxx', 
      callbackURL: 'http://localhost:3030/auth/google/callback' 
     } 
     }, 
     production: { 
     rootPath: rootPath, 
     db: 'xxx', 
     port: process.env.PORT || 80, 
     googleAuth: { 
      clientID: 'xxx', 
      clientSecret: 'xxxx', 
      callbackURL: 'https://<myheroku-app>:<heroku-port-no>/auth/google/callback' 
     } 
     } 
} 

Ce qui précède est le détail de ma stratégie google. La partie localhost fonctionne correctement si j'ajoute http://localhost:3030/auth/google/callback à l'URI de redirection autorisée. Mais quand j'essaye de faire la même chose pour l'application heroku, j'obtiens une erreur de 400 serveurs avec Error: redirect_uri_mismatch comme erreur.

Comment réparer ce problème? Je suis si proche de déployer cette application et coincé avec juste cette chose. Faites-moi savoir si vous auriez besoin de plus d'informations.

Répondre

0

Vous devez ajouter heroku nom de domaine et Heroku rappel url voir exemple ci-dessous travail:

enter image description here

+0

Aaah .... Gotcha ... Par défaut heroku me donne https URL. Tout ce que je devais faire était de le changer en http. Cela a fonctionné beaucoup merci! – Wizard