Как зарегистрировать пользователя от ВК на devise?

Почитал форум не нашел похожих вопросов. Rails 4+ devise 3 + omniauth. Для начала попробую обойтись описанием вопроса в общем виде без кода. Было реализовано следующее: Классическая регистрация (email+password) без подтверждения на email. Потом добавлен вход (+автоматическая регистрация при первом входе) через ВК, twitter и facebook. Сейчас уже не помню точно, но присылает email только twitter, остальные две сети мыло пользователя скрывают. Я обошелся тогда тем, что впихнул в поле email что то типа email+user_id+@+provider+.ru
Получались уникальные не существующие емайлы, например email29234942@vkontakte.ru, email23450320@facebook.ru и пр.). По истечению времени понадобилось реальных адресов от пользователей. Включил confirmation на devise. Классическая регистрация работает на ура. Пользователь регистрируется - на мыло высылается письмо с токеном. Он переходит по ссылке - аккаунт подтверждается и пользователь может авторизовываться. Потом на форме настроек пользователя он может изменить почту - снова высылается письмо на новый емайл. Старый пока в базе не переписывается. Как только пользователь подтверждает новый емайл - девайс обновляет запись в базе и емайл становится другим. Теперь главная проблема. Пытаюсь зайти через соц сети - создается запись в базе с несуществующим емайл. На него шлется письмо с подтверждением, тем временем пользователь не может зайти на мой сайт под своим аккаунтом, пока не подтвердит его. Таким образом он не может зайти и задать новый емайл - реальный и впоследствии его подтвердить.

Еще раз что мне нужно.
  • Либо нужно, чтобы devise после регистрации через соцсети пускал в аккаунт без подтверждения почты - тогда я заставлю ввести реальный, который впоследствии подтвердят. Ну т.е. аккаунт не подтвержден, а войти можно.
  • Либо при входе мне бы отдали соцсети емайл пользователя, который он указал при регистрации в оных (что я думаю не осуществимо).
  • Либо мне нужен способ, до которого я не догадался.


Т.е. получается я думаю распространенная задача - как с помощью девайс с включенным подтверждением емайл регить новых пользователей, приходящих из соцсетей, которые не предоставляют емайл пользователя?

Спасибо, что прочитали столько букв)
  • Вопрос задан
  • 289 просмотров
Решения вопроса 1
@sunnmas Автор вопроса
Ruby
Во, похоже на то что мне нужно))
initializers/devise.rb
# ==> Configuration for :confirmable
  # A period that the user is allowed to access the website even without
  # confirming his account. For instance, if set to 2.days, the user will be
  # able to access the website for two days without confirming his account,
  # access will be blocked just in the third day. Default is 0.days, meaning
  # the user cannot access the website without confirming his account.
  config.allow_unconfirmed_access_for = 2.days

Работает.
Правда сегодня при регистрации на ivi.ru я увидел следующее:
888b0440d49c40a79edf31d23a2f96be.png

Вопрос: как получить доступ к электронному адресу из моего приложения?

Нашел ответ здесь на сайте:
Ссылка
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@fuCtor
Ruby разработчик
есть метод у объекта модели: skip_confirmation!

stackoverflow.com/questions/20798573/skip-email-co...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы