Ответ 1
В настоящее время протокол OAUTH2 для аутентификации и аутентификации хорошо поддерживается google.So. Лучше использовать то же самое. Здесь находится документация google. Используйте 'паспорт-google-oauth'. Вот реализация. Это должна быть конфигурация объектов приложения, а также увидеть, что объект oauth2strategy используется из модуля pass-google-oauth, а также проверить области в регистрации маршрута app.get.
var googleStrategy = require('passport-google-oauth').OAuth2Strategy;
app.configure(function() {
app.set('views', './views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({secret:'MySecret'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static('./public'));
});
app.get('/auth/google', select.passport.authenticate('google',{scope: 'https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile'}));
app.get('/auth/google/callback', function() {
passport.authenticate('google', {
successRedirect: '/profile',
failureRedirect: '/fail'
});
});
app.get('/logout', function (req, res) {
req.logOut();
res.redirect('/');
});
Но прежде чем создавать новую стратегию, перейдите в консоль разработчика googles и получите идентификатор клиента и секрет. Вот шаги
- перейдите сюда ссылка и создайте проект, вот снимок того же
- укажите новое имя и идентификатор проекта, вот снимок
- При создании нового проекта потребуется около минуты, и после создания нового проекта он перенаправит вас в конфигурацию приложения вашего приложения. На перенаправленной странице выберите APIS AND AUTH → API. На странице API включите GOogle + API, вот его снимок
-
затем перейдите к учетным данным (ниже API), затем нажмите Создать новый идентификатор клиента и зарегистрируйте домены и обратные вызовы для своего приложения (настройте домен как localhost), здесь его снимок!
5. Затем вы получите свой новый идентификатор и секрет. Используйте их для создания новой стратегии
passport.use(new googleStrategy({ clientID: '<TheNewclientID>', clientSecret: '<The New Secret>', callbackURL: "http://locahost:8080/auth/google/callback" }, function (accessToken, refreshToken, profile, done) { console.log(profile); //profile contains all the personal data returned done(null, profile) } ));
6.Знайте сериализацию и десериализацию
passport.serializeUser(function(user, callback){
console.log('serializing user.');
callback(null, user.id);
});
passport.deserializeUser(function(user, callback){
console.log('deserialize user.');
callback(null, user.id);
});
запустите сервер и перейдите на localhost: 8080/auth/google (не используйте 127.0.0.1:8080 вместо locahost). Это должно заставить его работать:)
[Другие полезные ссылки: Ознакомьтесь с первым комментарием kvcrawford о репо модуля в этой странице Passport-google - еще один популярный модуль, который использует для входа в систему с помощью google, теперь он устарел, а вот ссылка в отношении последних вопросы]