Невозможно получить доступ к моему имени пользователя google после проверки подлинности по паспорту Google OAuth2 - PullRequest
0 голосов
/ 27 августа 2018

Я пытался сделать базовый вход в систему с помощью кода Google для приложения node.js. Я аутентифицировал свой вход в Google, но после этого я не могу получить доступ к имени пользователя присоединенной учетной записи в профиле маршрута, который находится в папке представлений. Я прилагаю здесь важные биты.

вот мой файл passport.js

passport.use(new GoogleStrategy(secret.google, function(req, token, refreshToken, profile, done) {
   User.findOne({ googleId: profile.id }, function (err, user) {
     if(err) return done(err);

     if(user){
        req.flash('loginMessage','successfully logged in');
        return done(err);
     }
     else{

        const newUser = new User();
        newUser.email = profile._json.email;
        newUser.google =  profile.id;
        newUser.tokens.push({kind : 'google', token:token});
        newUser.profile.name = profile.displayName;

        newUser.save(function(err){
            if(err) throw err;
            req.flash('loginMessage','Successfully logged in');

            return done(null, newUser); 
        });
     }
   });
  }
 ));

вот мой файл server.js, где я использовал промежуточное ПО для использования res.locals для доступа к имени пользователя в папке представлений

app.use(function(req, res, next){
res.locals.user = req.user;
next(); 
});

и мой файл profile.ejs

<% layout('boilerplate') %>

<% if(message.length >0) {%>

<div class= "alert alert-success alert-dismissible">

<button class = "close" type = "button" data-dismiss ="alert" aria- 
label="Close">
<span aria-hidden="true">&times </span>
</button>

<%= message %>
 </div>
 <% }%>
  <%= user.profile.name %>

Там написано, что не может прочитать профиль не определено. Подскажите пожалуйста как это исправить.

...