如果在我的Rails应用程序的Facebook/Twitter上更改了用户图像,我想更新用户图像

如果在我的Rails应用程序的Facebook/Twitter上更改了用户图像,我想更新用户图像,facebook,devise,omniauth,ruby-on-rails-4.1,Facebook,Devise,Omniauth,Ruby On Rails 4.1,我正在使用omniauth让用户使用他的Facebook和Twitter帐户登录。在这里之前一切都很好,得到了我需要的一切,并保存在我的数据库中。现在我想要的是更新用户信息,例如:更具体的图像或名称或任何其他东西,我应该如何做,以便更新的信息也出现在我的应用程序中 我在保存用户的地方发布了我的用户模型代码 def self.find_for_facebook_oauthauth,在_resource=nil中签名 user=user.where:provider=>auth.provider,:

我正在使用omniauth让用户使用他的Facebook和Twitter帐户登录。在这里之前一切都很好,得到了我需要的一切,并保存在我的数据库中。现在我想要的是更新用户信息,例如:更具体的图像或名称或任何其他东西,我应该如何做,以便更新的信息也出现在我的应用程序中

我在保存用户的地方发布了我的用户模型代码

def self.find_for_facebook_oauthauth,在_resource=nil中签名 user=user.where:provider=>auth.provider,:uid=>auth.uid.first 如果用户 返回用户 其他的 注册用户=用户。其中:email=>auth.info.email.first 如果是注册用户 返回注册用户 其他的 user=user.createname:auth.extra.raw\u info.name,提供程序:auth.provider,uid:auth.uid,电子邮件:auth.info.email,密码:designe.friendly\u令牌[0,20],图像:auth.info.image 终止 终止 终止
您可以像这样重构代码:

def self.find_for_facebook_oauth(auth)
  user = User.where("(uid = ? AND provider = 'facebook') OR lower(email) = ?", auth.uid, auth.info.email).first || User.new

  #Here you simply update the attributes you want
  user.name = auth.extra.raw_info.name
  user.provider = auth.provider
  user.uid = auth.uid
  user.email = auth.info.email
  user.password = Devise.friendly_token[0..20]
  user.image = auth.info.image

  user.save
  user
end
我强烈建议您在字段中包含oauth_令牌和oauth_expires_,以便进一步扩展和使用Facebook图

希望这有帮助