@vetsmen

Авторизация через соц. сети + реферальный пользователь. Как?

Доброго времени суток.
Мне нужно знать, откуда пришел пользователь на сайт, и при первой авторизации записывать эту информацию в объект с пользователем.
Допустим мы уже знаем, откуда он пришел, и данная информация хранится в localstorage.
Теперь банальный вопрос: как передать эту информацию на сервер, если я использую passport.js?
Допустим через get параметр, но как мне его вытащить на сервере?
Вся проблема в том, что конечный инстанс не содержит старый req (ибо идут запросы и редиректы во время авторизации на другие сайты).
Вот код:
app.get('/auth/vk', passport.authenticate('vkontakte', {display: 'popup'}));
app.get('/auth/vk/callback', (req, res, next) => {
	passport.authenticate('vkontakte', {session: false}, (err, dda, info) => {
		if(err) {
			return next(err);
		}
		res.render('authorization', {dda});
	})(req, res, next);
});
passport.use(new VKontakteStrategy(
	{
		clientID:     config.app_id,
		clientSecret: config.app_vk_secret,
		callbackURL:  `${config.frontapp_protocol}://${config.app_url}:${config.frontapp_port}/auth/vk/callback`,
		profileFields: ['photo_200']
	}, (accessToken, refreshToken, params, profile, done) => {
	    let dda = params.token;
	    done(null, dda);
	}
));
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
day90
@day90
Привет.
Если я правильно понял задачу, то вам сюда: https://github.com/joeltmiller/SQL-Passport-Guide.
Если, что-то будет не понятно - пишите в комментах, как только возможность появится, попробую написать в js.
Вкратце - не вижу полноценной инициализации passport(нет сериализации и десериализации данных, как следствие отсутсвует возможность добавлять и забирать данные из сессии и невозможность отправки в БД или объект). Есть разные решения данной проблемы, пока не вижу используемый стек, не могу сказать детали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы