2016-03-14 71 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

嘗試使用圖形瀏覽器中相同的訪問令牌做相同的查詢 – WizKid

回答

0

根據您的服務器日誌,你的工作(在控制器/型號)不節能email屬性轉換User模型。

正如您在遷移中聲明的那樣,users必須驗證email(不允許爲空),以便User無法創建。

檢查你的控制器/模型,同時保存來自Facebook OAuth的用戶。

無論如何,在rails中,我建議你使用gem devise作爲用戶,使用omniauth-facebook作爲Facebook OAuth。

0

想通了。電子郵件列爲空=> false是搞砸了。另外,在完成基本魔法授權後,我使用外部授權的魔法維基來完成這項工作,而維基似乎已被棄用。我的用戶模型和身份驗證模型都有attr_accessor用於電子郵件,名稱等等,這也是搞砸了。考慮到這一點,並在我的用戶控制器中使用可訪問性散列進行驗證,強參數運行得更好。

感謝大家一起看看吧!

相關問題