2016-03-14 3 views
0

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

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.6ms) INSERT INTO "users" ("created_at", "updated_at") VALUES ($1, $2) RETURNING "id" [["created_at", "2016-03-14 00:50:35.548272"], ["updated_at", "2016-03-14 00:50:35.548272"]] 
    (0.2ms) ROLLBACK
+0

Вы являетесь пользователем, у которого есть адрес электронной почты, который проверен? – WizKid

+0

Да. Пробовал и с другой учетной записью – Sofanisba

+0

Попробуйте сделать тот же запрос с тем же токеном доступа в Graph Explorer – WizKid

ответ

0

На основании вашего журнала сервера, ваша работа (на контроллере/модель) не экономить email атрибутов в User модель.

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

Проверьте свой контроллер/модель, экономя пользователя от Facebook OAuth.

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

0

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

Спасибо всем, кто посмотрел на него!

Смежные вопросы