【问题标题】:Is it possible to save multiple users using omniauth-facebook rails gem?是否可以使用omniauth-facebook rails gem 保存多个用户?
【发布时间】:2014-01-19 02:37:13
【问题描述】:

我使用登录单个用户的 Facebook-omniauth gem 在 user.rb 中有以下代码:

 def self.from_omniauth(auth)
where(auth.slice(:provider, :fb_id)).first_or_initialize.tap do |user|
  user.provider          = auth.provider
  user.fb_id             = auth.uid
  user.name              = auth.info.name
  user.first_name        = auth["info"]["first_name"] unless auth["info"].blank?
  user.last_name         = auth["info"]["last_name"] unless auth["info"].blank?
  user.picture_url       = auth.info.image
  user.email             = auth.info.email
  user.oauth_token       = auth.credentials.token unless auth["info"].blank?
  user.location          = auth.info.location unless auth["info"].blank?
  user.save!
end

我想为多个 facebook 用户建立用户帐户。当我正常登录但其他人登录时,该应用程序将替换我的用户实例。有没有办法通过这个 gem 继续建立用户帐户?

谢谢!

【问题讨论】:

  • 嗯 - 我对这个问题有点困惑。你能举个例子说明你正在尝试做什么吗?
  • 我是否需要像 Devise 这样的用户管理 gem 才能拥有多个 Facebook Omniauth 用户?似乎总是只有 1 个用户,最后一次登录。
  • 我想要做的是当另一个用户登录时,它们被保存在用户数据库中,而不是覆盖第一个用户。 @wyclin 够清楚吗?

标签: ruby-on-rails facebook ruby-on-rails-4 omniauth


【解决方案1】:

解决方案位于第二行:where(auth.slice(:provider, :fb_id))

我将它从 :uid 更改为 :fb_id 以匹配我所有其他表中其他所有内容的 facebook id,但在检查 auth 哈希后我意识到 :fb_id 根本没有找到,因此没有产生任何新用户。

我将我的用户fb_id 列重命名为uid,它现在可以正确收集新用户:

def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
      user.provider          = auth.provider
      user.uid               = auth.uid
      user.name              = auth.info.name
      user.first_name        = auth["info"]["first_name"] unless auth["info"].blank?
      user.last_name         = auth["info"]["last_name"] unless auth["info"].blank?
      user.picture_url       = auth.info.image.sub("square", "large")
      user.email             = auth.info.email
      user.oauth_token       = auth.credentials.token unless auth["info"].blank?
      user.location          = auth.info.location unless auth["info"].blank?
      user.save!
    end
  end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多