Я действительно надеюсь, что это мой последний вопрос в API Stormpath. Переключение с C# и PHP на узел было несколько сложным.Социальный вход на страницу регистрации для Stormpath
Я пытаюсь реализовать социальную регистрацию на странице регистрации. Предварительно установленная опция помещает его только на страницу входа.
Оказание страницы и добавление элементов в представление Jade достаточно просто, но мне нужно получить команду oauthStateToken. Теперь я смотрел на то, как код login.js делает это:
var oauth = require('../oauth');
var oauthStateToken = oauth.common.resolveStateToken(req, res);
var formActionUri = (config.web.login.uri + (nextUri ? ('?next=' + nextUri) : ''));
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
extend(options, {
form: form,
formActionUri: formActionUri,
oauthStateToken: oauthStateToken,
hasSocialProviders: hasSocialProviders
});
Так по существу он называет файлы клятве и проходит через код, теоретически, я мог бы сделать что-то похожее на register.js - по существу (только пример кода):
var oauth = require('../oauth');
var _ = require('lodash');
var hasSocialProviders = _.some(config.web.social, function (socialProvider) {
return socialProvider.enabled;
});
var oauthStateToken = '';
if (hasSocialProviders) {
oauthStateToken = oauth.common.resolveStateToken(req, res);
}
helpers.render(req, res, view, {
form: helpers.sanitizeFormData(req.body),
formModel: viewModel.form
oauthStateToken : oauthStateToken,
hasSocialProviders: hasSocialProviders
});
но, конечно, я не хотел бы вмешиваться в основные файлы, и думать о создании функции промежуточного слоя, что-то вроде app.use('/register', callFunction, router);
, но у меня возникли некоторые трудности в концептуализации, как это будет работать. Кажется, я понимаю, как stormpath позволяет мне генерировать маркер oauth, который я храню как cookie с использованием JWT, но мне сложно скомпоновать его в рабочий код, не реплицируя много кода, уже существующего в библиотеке.
Я даже могу получить его работу с помощью REST API, но я хотел бы использовать его в библиотеке express-stormpath. Таким образом, некоторое объяснение в контексте библиотеки экспресс-штурма также будет полезным. ИЛИ я переусердствую это, должен ли я просто разветвить библиотеку, внести изменения в register.js и попытаться нажать вверх по течению?
Еще раз спасибо,
Эй, так yep - я пробовал что-то подобное, но было нехорошо ссылаться на функции в библиотеке (в частности, на библиотеку oauth напрямую, а не на документально подтвержденный API). Я попробую и посмотрю отчет. Я также разблокирую код и попробую сделать запрос с вами (не стесняйтесь снижаться, поскольку вы, вероятно, подумали о лучших способах его выполнения). Это похоже на достаточно распространенный случай использования, когда вы хотите убедиться, что ваши пользователи знают, что им не нужно регистрироваться и могут просто входить в систему напрямую с помощью социальных входов. Также спасибо! Вы, ребята, чемпионы. –
Две вещи, которые мне пришлось изменить: 'oauthStateToken' вместо' oAuthStateToke' И 'app.use' вместо' app.get' - хотя я не думаю, что это имеет значение в этом случае вообще. Еще раз спасибо! –
Спасибо за ответ, я исправил пример соответственно.Я рад, что вы смогли заставить его работать :) – robertjd