【问题标题】:Facebook OAuth with sorcery not saving emails to database带有巫术的 Facebook OAuth 不将电子邮件保存到数据库
【发布时间】:2016-03-14 00:53:30
【问题描述】:

无法通过 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"

users 表如下所示:

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) 回滚

【问题讨论】:

  • 您是用户,用户的电子邮件地址已通过验证?
  • 是的。也尝试使用其他帐户
  • 尝试在 Graph Explorer 中使用相同的访问令牌执行相同的查询
  • 请给出用户保存到数据库的代码。或者用户保存发生在 gem 中?他们告诉我们您使用的是什么宝石。

标签: ruby-on-rails facebook email oauth sorcery


【解决方案1】:

想通了。电子邮件列是 null => false 搞砸了。此外,在设置基本的巫术身份验证后,我已经使用外部授权的巫术 wiki 完成了此操作,并且该 wiki 似乎已被弃用。我的用户模型和身份验证模型都有用于电子邮件、姓名等的 attr_accessor ......这也搞砸了。把它拿出来并在我的用户控制器强参数中使用可访问的哈希进行身份验证效果更好。

感谢所有观看它的人!

【讨论】:

    【解决方案2】:

    根据您的服务器日志,您的工作(在控制器/模型上)未将 email 属性保存到 User 模型中。

    正如您在迁移中声明的那样,users 必须验证 email(不允许为 null),以便无法创建 User

    检查您的控制器/模型,同时从 Facebook OAuth 保存用户。

    无论如何,在 Rails 中,我建议您将 gem devise 用于用户,将 omniauth-facebook 用于 Facebook OAuth。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2015-05-06
      • 2012-01-25
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多