如果在我的Rails应用程序的Facebook/Twitter上更改了用户图像,我想更新用户图像
我正在使用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 终止 终止 终止如果在我的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,:
您可以像这样重构代码:
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图
希望这有帮助