Разработать: Использование регистрируемых и всевозможных в одном приложении - PullRequest
3 голосов
/ 09 сентября 2011

Как я могу использовать оба модуля registerable и omniauthable в Devise?

В частности, я бы хотел, чтобы пользователи могли делать следующее:

  1. Зарегистрироваться/ войти с помощью электронной почты и пароля
  2. Зарегистрироваться / войти с помощью Facebook (через omniauth)
  3. Присоединить или удалить учетную запись Facebook к своей учетной записи, чтобы они могли войти с помощью своей электронной почты или своей учетной записи Facebook.

Я вообще не знаю, как сделать 3.

1 и 2 сделаны, но странно, если пользователь, зарегистрированный в учетной записи Facebook, я нене нужно показывать (или требовать), чтобы они вводили пароль для обновления своего профиля.

Итак, как я могу ...

  1. Разрешить пользователям присоединять учетную запись Facebook к своей текущейучетной записи, чтобы они могли войти в систему с помощью.
  2. Если пользователь зарегистрировался только с учетной записью Facebook, как скрыть (и не требовать) поля пароля при редактировании своих настроек.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Эта статья может показаться вам интересной:

http://www.ruby -on-rails-outsourcing.com / 2011/05/06 / как слить Facebook-аккаунт-в-существующий-user-account-using-devise /

Просто пробежал сам по себе, когда я смотрел на то же самое, и это отлично сработало для меня, но еще одна заметка, которую невероятно легко пропустить, так какэто едва упомянуто в единственном параграфе;не забудьте сгенерировать миграцию для добавления facebook_uid в модель пользователя.

1 голос
/ 12 сентября 2011

Позвольте пользователям присоединить учетную запись Facebook к своей текущей учетной записи, так они могут войти с помощью.

  • на странице настроек пользователя добавить ссылку на «ссылку на учетную запись Facebook»
  • ссылка просто ведет пользователя через обычные процессы аутентификации Facebook с помощью OmniauthCallbacksController, просто убедитесь, что в вашем методе OmniauthCallbacksController facebook вы добавили некоторый код, чтобы увидеть, если пользователь уже вошел в систему, и если он - вы просто добавьте маркер аутентификации для пользователя (у меня есть таблица, в которой хранится токен аутентификации для каждого пользователя)

Если пользователь зарегистрировался только с учетной записью Facebook, как мне скрыть (и не обязательно) поля пароля при редактировании их настроек.

Взгляните на это: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

Надеюсь, эта помощь.

...