Стратегия паспорта для аутентификации в Google с помощью OAuth 2.0 API.
Этот модуль позволяет вам аутентифицироваться с помощью Google в ваших приложениях Node.js. Подключившись к Passport, аутентификацию Google можно легко и ненавязчиво интегрировать в любое приложение или фреймворк, поддерживающий промежуточное ПО в стиле Connect, включая Express.
Passport - это промежуточное программное обеспечение аутентификации для Node. Он предназначен для единственной цели: аутентификации запросов. При написании модулей инкапсуляция является достоинством, поэтому Passport делегирует все остальные функции приложению. Такое разделение задач сохраняет код чистым и обслуживаемым, а также упрощает интеграцию Passport в приложение.
Установить
$ npm install passport
$ npm install passport-google-oauth20
использование
Создать приложение
Перед использованием passport-google-oauth20 необходимо зарегистрировать приложение в Google. Если вы еще этого не сделали, новый проект можно создать в Google Developers Console. Вашему приложению будет выдан идентификатор клиента и секрет клиента, которые необходимо предоставить стратегии. Вам также необходимо настроить URI перенаправления, который соответствует маршруту в вашем приложении.
Как зарегистрировать приложение и создать проект в Google Developer Console?
- Войдите или зарегистрируйтесь в консоли разработчика Google.
- Создайте новый проект с названием того проекта, который вам нужен.
- На панели инструментов нажмите «Включить APIS и службы», затем выполните поиск и включите API Google Plus и обратитесь к API в своем проекте.
- На странице "Учетные данные" выберите Создать учетные данные, затем Идентификатор клиента OAuth.

4. Вам может быть предложено указать название продукта на экране согласия; Если да, нажмите Настроить экран согласия, введите запрашиваемую информацию и нажмите Сохранить, чтобы вернуться к экрану учетных данных.
1. Авторизованные домены похожи на Google, позволяющие только приложениям, которые проходят аутентификацию с помощью OAuth, использовать авторизованные домены. (например, vjtech.in) ваш веб-сайт размещен на некоторых авторизованных доменах.
2. Ссылка на Политику конфиденциальности приложения похожа на условия и политику вашего веб-сайта, а ссылка на Условия использования приложения не является обязательной.

5. Выберите Другое в поле Тип приложения и введите любую необходимую дополнительную информацию.
6. Нажмите Создать.
7. На открывшейся странице скопируйте идентификатор клиента и секрет клиента в буфер обмена, так как они понадобятся вам при настройке клиентской библиотеки.
8. Запишите идентификатор клиента и секретный ключ клиента.
Настроить стратегию
Эта стратегия также называется обратным вызовом проверки из Google. Эта функция GoogleStrategy вызывается после того, как пользователь выбрал свое письмо для входа в систему на интерфейсе пользователя или на странице аутентификации Google.
var GoogleStrategy = require('passport-google-oauth20').Strategy; passport.use(new GoogleStrategy({ clientID: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET, callbackURL: "http://www.example.com/auth/google/callback" }, function(accessToken, refreshToken, profile, cb) { User.findOrCreate({ googleId: profile.id }, function (err, user) {return done(err, profile);}); } ));
Для этой функции нам нужны ClientID и clientSecret ключ, и мы получаем его из консоли разработчика Google после создания проекта, вы можете сослаться на него выше.
Перед настройкой callbackURL нам нужно добавить URL-адрес обратного вызова в консоли разработчика Google.

Авторизованные источники JavaScript
Домены происхождения и перенаправления необходимо добавить в список Авторизованных доменов в Настройках согласия OAuth.
Это авторизованное происхождение javascript похоже на то, где вы звоните со страницы аутентификации Google (например, http: // localhost: 3001 / auth / google)
index.html
<a href=”/auth/google”>Google SignIn</a>
Авторизованные URI перенаправления
Для использования с запросами с веб-сервера. Это путь в вашем приложении, по которому пользователи перенаправляются после аутентификации в Google. Он перенаправляет на сервер данные пользователя.
После настройки на этой странице мы переходим к коду сервера и добавляем GoogleStrategy.
CallbackURL похож на то, что Google получает данные выбранной почты пользователя, куда ему нужно вернуться. URL-адрес обратного вызова - это URL-адрес сервера (например, http: // localhost: 3000 / auth / google / callback). Этот пример предназначен для локального сервера, если серверная часть размещена где-то, вы просто указываете URL-адрес, размещенный на сервере.
Затем функция возвращает accessToken, refreshToken, profile, cb. Мы получаем данные о пользователе из переменной профиля. После получения сведений о пользователе сохранить их в базе данных, если они понадобятся для дальнейшего использования.
Аутентифицировать запросы
Наконец, маршруты, откуда я должен вызывать эти функции?
Из внешнего интерфейса после вызова паспорта «/ auth / google».
var passport = require("passport");
app.get('/auth/google',
passport.authenticate('google', { scope: ["profile", "email"]})
);
После того, как пользователь выбрал свою учетную запись, этот API обратного вызова вызывается со страницы аутентификации Google. Отсюда вы можете
app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), function(req, res) { // Successful authentication, redirect home.res.redirect(`http://localhost:8080/dashboard`);});
Во время перенаправления вы можете получить доступ к сведениям о пользователе здесь, вы можете перенаправить URL-адрес с аутентифицированным идентификатором пользователя.
let userID = req.user.id;
res.redirect(`http://localhost:8080/dashboard/id=${userID}`);