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.