Стратегия паспорта для аутентификации в 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?

  1. Войдите или зарегистрируйтесь в консоли разработчика Google.
  2. Создайте новый проект с названием того проекта, который вам нужен.
  3. На панели инструментов нажмите «Включить APIS и службы», затем выполните поиск и включите API Google Plus и обратитесь к API в своем проекте.
  4. На странице "Учетные данные" выберите Создать учетные данные, затем Идентификатор клиента 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}`);