与omniauth linkedin Ruby宝石的大型配置文件图像

win*_*ton 2 ruby ruby-on-rails oauth linkedin ruby-on-rails-3

我正在使用omniauth-linkedin gem允许用户使用他们的LinkedIn帐户登录我的Rails应用程序.我目前正在auth.info.image用来存储用户的LinkedIn个人资料图片网址:

user.rb

def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_create do |user|
      user.provider = auth.provider
      user.uid = auth.uid
      user.first_name = auth.info.first_name
      user.last_name = auth.info.last_name
      user.email = auth.info.email
      user.linkedin_photo_url = auth.info.image
      user.password = Devise.friendly_token[0,20]
    end
Run Code Online (Sandbox Code Playgroud)

但是,图像非常小(50x50).除了auth.info.image之外还有其他方法可以用来拉取用户主要个人资料页面上的大型个人资料图片吗?

谢谢!

编辑:我正在使用omniauth-linkedinomniauth宝石.看起来linkedin宝石有一个方法可以选择确定图像大小,但我正在努力用omniauth-linkedin gem实现它.本自述文件解释说这是可能的,但解释缺乏一些细节.有人可以帮我解决这个问题吗?

https://github.com/skorks/omniauth-linkedin#using-it-with-the-linkedin-gem

小智 7

我知道这已经有一段时间了,但我只是在寻找这个,并认为我会把它留在这里.解决方案很好,但会引起额外的通话.Omniauth已经在获取配置文件,所以我们只需告诉它也可以获得原始图片

linkedin_options = {
  scope: 'r_fullprofile r_emailaddress',
  fields: ['id', 'email-address', 'first-name', 'last-name', 'headline', 'location', 'industry', 'picture-url', 'public-profile-url', "picture-urls::(original)"]
}
provider :linkedin, app_id,app_secret, linkedin_options
Run Code Online (Sandbox Code Playgroud)

pictureUrls 将提供额外信息.

要获取图像,请使用 auth_hash[:extra][:raw_info][:pictureUrls][:values].first


mil*_*hes 6

检索原始大小的配置文件图像的一种方法是进行单独的API调用.

  1. 包括gem'linkedin'
  2. 使用内容创建初始化文件/config/initializers/linkedin.rb:

    LinkedIn.configure do | config | config.token ="你的LinkedIn app consumer_key"config.secret ="你的consumer_secret"结束

  3. 在你的self.from_omniauth方法替换行

    user.linkedin_photo_url = auth.info.image

client = LinkedIn::Client.new
client.authorize_from_access(auth.extra.access_token.token, auth.extra.access_token.secret)
user.linkedin_photo_url = client.picture_urls.all.first
Run Code Online (Sandbox Code Playgroud)

DONE