В Метеоре, как я могу настроить логины Facebook, чтобы использовать учетные записи useracc: основные поля регистрации?
У меня есть приложение Meteor 1.3 с Blaze и Flowrouter. Я использую useraccounts:core, с некоторыми из связанных пакетов. Я прочитал руководство. Я могу войти через Facebook / Google / Instagram / Twitter. у меня не активирован пароль учетной записи, потому что я хочу заставить пользователей входить в социальные сети.
то, что я хотел бы сделать, это добавить несколько полей регистрации, в соответствии с руководством:
AccountsTemplates.addField({
_id: "fruit",
type: "radio",
displayName: "Preferred Fruit",
select: [
{
text: "Apple",
value: "aa",
}, {
text: "Banana",
value: "bb",
}, {
text: "Carrot",
value: "cc",
},
],
});
Я заметил:
- любые поля, которые я добавляю, не отображаются, пока я не добавлю пакет с учетными записями
- хотя useraccounts: core позволяет мне (скажем) "Войти через Facebook" и "Зарегистрироваться через Facebook", практической разницы нет. т.е. первый логин считается регистрацией
то, что я хотел бы, это следующее:
- если у пользователя нет учетной записи, "Войти через Facebook" не регистрирует его автоматически
- я могу использовать встроенную страницу регистрации и функцию addFields для учетных записей социальных сетей, заставляя FB et. и др. пользователи, чтобы заполнить мои регистрационные поля
Это возможно? насколько я могу судить, даже если я включил пароль учетных записей и добавил свои поля, невозможно (используя эти пакеты) заставить кого-либо правильно зарегистрироваться. они могут просто "Войти через Facebook" и иметь учетную запись.
Есть ли что-то, чего мне не хватает в том, что доступно? если нет, как другие достигли того, что я хочу сделать, не отказываясь от использования этих пакетов и создавая все это с нуля?
1 ответ
Так вот что я сделал...
Я дал и добавил учетные записи-пароль для того, чтобы получить функциональность регистрации, но отключил вход в систему с именем пользователя / паролем и отключил регистрацию через социальные сети. Мой следующий шаг будет заключаться в том, чтобы заставить их связываться с учетной записью в социальной сети сразу после регистрации и входа в систему.
на сервере я использую Accounts.validateNewUser() для сбоя, если нет пароля. это позволяет регистрироваться через аккаунт-пароль, но запрещает регистрацию OAuth. на экране регистрации клиента я использую jQuery для удаления DOM-узлов в atForm, которые показывают социальную регистрацию.
также на сервере я использую Accounts.validateLoginAttempt(), чтобы потерпеть неудачу, если попытка Info.allowed является ложью. Это фиксирует случай, когда кто-то впервые использует логин в социальной сети (т. Е. Не подключен к существующей учетной записи). на клиенте, используя jQuery, я удаляю узлы DOM в atForm, которые показывают логин с учетной записью на странице входа.
это немного уродливо, но в основном это работает. Я хотел бы запретить вход в систему по имени пользователя / паролю в Accounts.validateLoginAttempt(), но он вызывается сразу после Accounts.validateNewUser(), и мне нужно войти в систему, чтобы я мог заставить их связать учетную запись в социальной сети. то есть, чтобы они могли войти в следующий раз. Я сделаю это, если смогу найти способ различить логин, связанный с регистрацией, и более поздний логин.
Я открыт для предложений по улучшению!