添加模型关注 omniauth 属性 concern.rb
module OmniauthAttributesConcern
extend ActiveSupport::Concern
module ClassMethods
Add Methods here
end
end
在这个问题中,我们可以为每个社交媒体创建方法来获取和存储属性。
def twitter params
(params['info']['email'] = "dummy#{SecureRandom.hex(10)}@dummy.com") if params['info']['email'].blank?
attributes = {
email: params['info']['email'],
first_name: params['info']['name'].split(' ').first,
last_name: params['info']['name'].split(' ').last,
username: params['info']['nickname'],
password: Devise.friendly_token
}
create(attributes)
end
注意:如果用户在 Twitter 上确认了他/她的电子邮件,则 Twitter 仅返回电子邮件地址; 否则返回
nil
值。
-
我们可以像上面添加 Twitter 一样添加其他社交媒体帐户。
-
来自社交媒体帐户的个人资料图像也可以被提取,并将作为传递
remote_image_url: params['info']['image']
注意:上面的示例适用于 CarrierWave gem,而
remote_image_url
中的'image'
是 DB 列。你可以使用任何其他宝石并将params['info']['image']
传递给它。