Привет, коллеги-разработчики! ? Готовы ли вы повысить уровень своей игры в аутентификацию? Сегодня мы погрузимся в мир Google OAuth 2.0 и узнаем, как его реализовать с помощью Passport.js. Поверьте, ваши пользователи будут вам благодарны за удобный и безопасный вход в систему!
Почему Google OAuth 2.0? ?
Прежде чем мы начнем, давайте поговорим о том, почему Google OAuth 2.0 так важен:
1. Удобство для пользователя: больше никаких головных болей из-за «забыл пароль»!
2. Безопасность Fort Knox: используйте первоклассные протоколы безопасности Google.
3. Повышение доверия: пользователи чувствуют себя в большей безопасности, используя свои учетные записи Google.
Звучит хорошо, правда? Давайте начнем!
Шаг 1: готовьтесь! ?️
Во-первых, давайте установим наши инструменты. Запустите свой терминал и запустите:
npm install passport passport-google-oauth2 express-session
Эти пакеты — ваши новые лучшие друзья для реализации Google OAuth 2.0.
Шаг 2. Приключение в консоли разработчика Google ?️
Пришло время настроить проект в консоли разработчика Google. Вот ваша карта сокровищ:
1. Перейдите в консоль разработчика Google.
2. Создайте новый проект (дайте ему крутое имя!).
3. Перейдите в раздел «API и службы > Учетные данные».
4. Нажмите «Создать учетные данные» и выберите «Идентификаторы клиентов OAuth 2.0».
5. Настройте экран согласия (не забудьте улыбнуться значку!).
6. Настройте идентификатор клиента OAuth 2.0 (тип веб-приложения).
7. Добавьте URI перенаправления (например, http://localhost:3000/auth/google/callback).
Совет для профессионалов: храните свой идентификатор клиента и секрет клиента в безопасности. Они как ключи от вашего королевства OAuth!
Шаг 3: Волшебная настройка паспорта ✨
Теперь давайте добавим немного магии Passport.js в наше приложение:
const passport = require('passport'); const GoogleStrategy = require('passport-google-oauth20').Strategy; passport.use(new GoogleStrategy({ clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackURL: "http://localhost:3000/auth/google/callback" }, function(accessToken, refreshToken, profile, done) { // Your user-saving logic goes here! User.findOrCreate({ googleId: profile.id }, function (err, user) { return done(err, user); }); } )); // Don't forget to serialize and deserialize your users! passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser((id, done) => { User.findById(id, (err, user) => { done(err, user); }); });
Шаг 4: путь к успеху ?️
Давайте настроим наши каналы аутентификации:
const express = require('express'); const passport = require('passport'); const app = express(); app.use(passport.initialize()); app.use(passport.session()); // The gateway to Google OAuth app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }) ); // Welcome back! Handle the callback app.get('/auth/google/callback', passport.authenticate('google', { successRedirect: '/auth/google/success', failureRedirect: '/auth/google/failure' }) ); // Success and failure destinations app.get('/auth/google/success', (req, res) => { res.send('Welcome aboard! ?'); }); app.get('/auth/google/failure', (req, res) => { res.send('Oops! Something went wrong. ?'); }); app.listen(3000, () => { console.log('Server is up and running! ?'); });
Шаг 5: Время запуска! ?
Настройте переменные среды (GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET), и все готово к старту!
node app.js
Перейдите по адресу http://localhost:3000/auth/google и наблюдайте, как происходит волшебство!
Подведение итогов ?
И вот оно, ребята! Вы только что внедрили Google OAuth 2.0 с помощью Passport.js. Теперь ваши пользователи могут входить в свои учетные записи Google, наслаждаясь простой и безопасной работой.
Помните, это только начало. В производственное приложение вам может понадобиться добавить больше функций, например:
Вы пробовали использовать OAuth в своих проектах? С какими проблемами вы столкнулись? Пишите свои мысли в комментариях ниже – мне бы хотелось услышать о ваших приключениях в стране аутентификации!
Удачного программирования, и пусть ваш вход в систему всегда будет гладким! ?????
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3