Facebook OAuth с колдовством не сохраняет письма в базу данных

Возникли проблемы с сохранением новых пользователей в моей базе данных через Facebook oauth, потому что для электронной почты задано значение null: false, и при попытке аутентификации он не получает письма. Не хочу менять мою базу данных в качестве обходного пути.

 config.facebook.key = ENV['facebook_app_id']
 config.facebook.secret = ENV['facebook_api_secret']
 config.facebook.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=facebook"
 config.facebook.user_info_mapping = { :email => "email", :name=> "name"}
 config.facebook.user_info_path = "me?fields=email, name"
 config.facebook.scope = "email" #etc
 config.facebook.display = "popup"
 config.facebook.access_permissions = ["email", "user_friends", "public_profile"]
 config.facebook.api_version = "v2.5"

Таблица пользователей выглядит так:

create_table "users",            force: :cascade do |t|
t.string     "name"
t.text       "about_me"
t.string     "email",            null: false
t.string     "crypted_password"
t.string     "salt"
t.datetime   "created_at"
t.datetime   "updated_at"
# .....

журналы сервера:

SQL (1,6 мс)  INSERT INTO "users" ("creation_at", "updated_at") ЗНАЧЕНИЯ ($1, $2) RETURNING "id"  [["creation_at", "2016-03-14 00:50:35.548272"], ["updated_at", "2016-03-14 00:50:35.548272"]]
   (0,2 мс)  ROLLBACK

2 ответа

Догадаться. Столбец электронной почты, имеющий значение null => false, облажался. Кроме того, я сделал это с помощью вики-колдовства на внешней авторизации после настройки базовой аутентификации колдовства, и вики, похоже, устарели. Моя модель пользователя и модель аутентификации имели атрибут attr_accessor для электронной почты, имени и т. Д., Что также испортило его. Снятие этого и размещение аутентификаций с хэшем доступных в моем контроллере пользователя сильных параметров работало лучше.

Спасибо всем, кто взглянул на это!

Исходя из журнала вашего сервера, ваша работа (на контроллере / модели) не сохраняется email приписать в User модель.

Как вы заявили в миграции, users должны подтвердить email (не разрешать ноль), чтобы User не может быть создан.

Проверьте ваш контроллер / модель при сохранении пользователя от Facebook OAuth.

Во всяком случае, в рельсах, я рекомендую вам использовать драгоценный камень devise для пользователя и omniauth-facebook для Facebook OAuth.

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