В Метеоре, как я могу настроить логины 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(), и мне нужно войти в систему, чтобы я мог заставить их связать учетную запись в социальной сети. то есть, чтобы они могли войти в следующий раз. Я сделаю это, если смогу найти способ различить логин, связанный с регистрацией, и более поздний логин.

Я открыт для предложений по улучшению!

Другие вопросы по тегам