@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(нет сериализации и десериализации данных, как следствие отсутсвует возможность добавлять и забирать данные из сессии и невозможность отправки в БД или объект). Есть разные решения данной проблемы, пока не вижу используемый стек, не могу сказать детали.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы