Last Updated: September 27, 2021
·
4.532K
· rebyn

Using omniauth-linkedin with Rails

First

Ryan did a detailed tutorial on using Omniauth. What I put here is several things to pay attention to when you work with Linkedin.

Gems to work with Omniauth and Linkedin:

gem 'omniauth'
gem 'omniauth-linkedin'

So basically, all the info that you want to retrieve from the user's Linkedin account should be put in config/initializers/omniauth.rb</code>

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :linked_in, "XXX", "XXX", 
    :scope => "r_basicprofile r_emailaddress", 
    :field => ["id", "email-address"]
end

:field</code> is where you tell Omniauth what to get from Linkedin, such things as:

"first-name", "last-name", "headline", "picture-url", "public-profile-url

Here is a list of all the available fields.

Side notes

The latest update of Omniauth doesn't use hash['user_info']['name']</code> anymore, but hash['info']['name']</code>.

Also, the retrieved URL from Linkedin public profile is kinda not friendly.

--- !ruby/hash:Hashie::Mashpublic_profile: http://linkedin.com/in/user

I have filed an issue here so that the gem creator can fix it. For this meanwhile let's make do with this solution:

hash['info']['urls'].to_s.gsub('#<Hashie::Mash public_profile="','').gsub('">',''))

Check out this gist if you're confused where to put this code.

  • T.