Понял!При обычной регистрации пользователя с authlogic, вот что происходит: before_validation: reset_persistence_token,: if =>: reset_persistence_token?Для этого устанавливается начальный persistence_token, если он пуст
. По какой-то причине плагин authlogic_facebook_connect пропускает эту проверку, в результате чего поле NULL persistence_token отправляется в базу данных.
В моемТаблица пользователей, у меня было поле persistence_token
как таковое
t.string :persistence_token
, оно должно быть определено так, но убедитесь, что оно не равно нулю:
t.string :persistence_token, :null => false
Теперь вместо зависанияв браузере вы получаете ошибку sqlite, в которой говорится, что токен постоянства равен нулю.Это лучше, теперь мы знаем, что происходит.
Переход к методу validate_by_facebook_connect
плагина authlogic_facebook_connect, расположенного в vendor / plugins / authlogic_facebook_connect / lib / authlogic_facebook_connect / session.rb, где написано
new_user.send(:"#{facebook_uid_field}=", facebook_session.user.uid)
new_user.send(:"#{facebook_session_key_field}=", facebook_session.session_key)
добавить еще одну строку, чтобы она гласила:
new_user.send(:"#{facebook_uid_field}=", facebook_session.user.uid)
new_user.send(:"#{facebook_session_key_field}=", facebook_session.session_key)
new_user.reset_persistence_token
Теперь мы удостоверимся, что у нас установлен токен постоянства при первом создании пользователя.сделайте это снова, браузер не зависает, пользователь создается, добро пожаловать в рабочую настройку authlogic facebook connect.
Несмотря на то, что я включил исправление в плагин authlogic_facebook_connect, это действительно проблема с авторизацией.
РЕДАКТИРОВАТЬ:
- Я отправил билет на страницу authlogic github об этой проблеме
- Я написал сообщение в блоге об этой проблеме, чтобы помочь другим, кто застрял с ней.