Advertisement
Guest User

Untitled

a guest
Sep 1st, 2023
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. const express = require('express');
  2. const session = require('express-session'); // Добавьте эту строку
  3.  
  4. const passport = require('passport');
  5. const GoogleStrategy = require('passport-google-oauth20').Strategy;
  6.  
  7. const app = express()
  8. function getUserById(userId, callback) {
  9. // Ваш код для получения информации о пользователе по его идентификатору
  10. // Вызывайте callback с результатом (err, user)
  11. }
  12.  
  13. // После определения функции можно использовать ее
  14. passport.deserializeUser(function(userId, done) {
  15. getUserById(userId, function(err, user) {
  16. done(err, user);
  17. });
  18. });
  19.  
  20. passport.deserializeUser(function(userId, done) {
  21. getUserById(userId, function(err, user) {
  22. done(err, user);
  23. });
  24. });
  25.  
  26. passport.deserializeUser(function(userId, done) {
  27. getUserById(userId, function(err, user) {
  28. done(err, user);
  29. });
  30. });
  31.  
  32. passport.serializeUser(function(userId, done) {
  33. done(null, userId);
  34. });
  35.  
  36. passport.deserializeUser(function(userId, done) {
  37. // Здесь вы можете загрузить данные пользователя по идентификатору userId
  38. // и передать их в функцию done.
  39.  
  40. done(null, user);
  41. });
  42.  
  43. // Добавьте следующие две строки для поддержки сеансов
  44. app.use(session({
  45. secret: '****',
  46. resave: false,
  47. saveUninitialized: false
  48. }));
  49.  
  50. // Подключите passport middleware после express-session
  51. app.use(passport.initialize());
  52. app.use(passport.session());
  53.  
  54. // Конфигурация паспорта с использованием GoogleStrategy
  55. passport.use(new GoogleStrategy({
  56. clientID: '*****',
  57. clientSecret: '****',
  58. callbackURL: '/auth/google/callback'
  59. },
  60. function(accessToken, refreshToken, profile, done) {
  61. // Здесь вы можете обработать и сохранить данные пользователя
  62. // после успешной аутентификации.
  63. console.log('Access Token:', accessToken);
  64. console.log('Refresh Token:', refreshToken);
  65. console.log('Profile:', profile);
  66.  
  67. done(null, profile);
  68. }));
  69.  
  70. // Маршрут для инициализации авторизации через Google
  71. app.get('/auth/google', passport.authenticate('google', {
  72. scope: ['profile', 'email']
  73. }));
  74.  
  75. // Маршрут для обработки колбэка после успешной авторизации
  76. app.get('/auth/google/callback',
  77. passport.authenticate('google', {
  78. successRedirect: '/success',
  79. failureRedirect: '/error'
  80. })
  81. );
  82.  
  83. // Защищенный маршрут, доступный только после авторизации
  84. app.get('/success', (req, res) => {
  85. res.send('Авторизация прошла успешно!');
  86. });
  87.  
  88. // Маршрут для обработки ошибок авторизации
  89. app.get('/error', (req, res) => {
  90. res.send('Ошибка авторизации!');
  91. });
  92. // Настройка порта для сервера
  93. const PORT = 3000;
  94.  
  95. // Запуск сервера
  96. app.listen(PORT, () => {
  97. console.log(`Сервер запущен на порту ${PORT}`);
  98. });
Tags: Code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement