简体   繁体   中英

How to get linkedin profile information in rails?

Hi i am using linkedin gem to connect with linkedin from rails. this what is my controller.

class LoginsController < ApplicationController
  helper_method :current_user

  def show
  end

  def create
    request_token = consumer.get_request_token(:oauth_callback => callback_login_url)
    Rails.cache.write(request_token.token, request_token.secret)
    redirect_to request_token.authorize_url
  end

  def callback
    request_token = OAuth::RequestToken.new(consumer, params[:oauth_token], Rails.cache.read(params[:oauth_token]))
    access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
    session[:access_token] = access_token.token
    session[:access_token_secret] = access_token.secret
    redirect_to :action => :show
  end

  def logout
    reset_session
    redirect_to :action => :show
  end

  private
  CONSUMER_KEY = {
    :key => "ddddd",
    :secret => "eeeeeeeeee"
  }
  CONSUMER_OPTIONS = { :site => 'https://api.linkedin.com',
                     :authorize_path => '/uas/oauth/authorize',
                     :request_token_path => '/uas/oauth/requestToken',
                     :access_token_path => '/uas/oauth/accessToken' }

  def consumer
    @consumer ||= OAuth::Consumer.new( CONSUMER_KEY[:key], CONSUMER_KEY[:secret], CONSUMER_OPTIONS)
  end

  def access_token
    if session[:access_token]
      @access_token ||= OAuth::AccessToken.new(consumer, session[:access_token], session[:access_token_secret])
    end
  end

  def current_user
    if access_token
      @current_user ||= JSON.parse(access_token.get('http://api.linkedin.com/v1/people/~', 'x-li-format' => 'json').body)
    end
    @current_user
  end

end

and this is what is my view:

<% if current_user %>
  Welcome to Lovelinked , <%=link_to current_user['firstName'], current_user['siteStandardProfileRequest']['url'] %>
  <%=link_to current_user['lastName'], current_user['siteStandardProfileRequest']['url'] %>
  <%=button_to "Sign Out", logout_login_path, :method => :get %>
<% else %>
  Sign in with LinkedIn
  <%=button_to "Sign In", login_path, :method => :post %>
<% end %>

I am able to get firstName and lastName and passed parameters like images_url and location but it is not working, How to get these informations also educations currentcompanyname etc.

Please help me i googled but could not get correct information.

Using the 'linkedin' gem you can do the following to get the information you are looking for returned as an array of strings.

user = client.profile(:fields => %w(positions))
companies = user.positions.all.map{|t| t.company}
# And if you want the most recent company it can be accessed via companies[0]

All of this information was found at https://github.com/pengwynn/linkedin/blob/master/examples/profile.rb

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM