Reputation: 84
is it possible to post in linkedin through ruby on rails application. If so kindly guide me how to go for it.
I googled a lot but didnt get any correct solution that works.
My Code is as follows.
for controller,
require 'rubygems'
require 'linkedin'
class AuthController < ApplicationController
def index
LinkedIn.configure do |config|
config.token = "somekey"
config.secret = "somesecret"
end
LINKEDIN_CONFIGURATION = { :site => 'https://api.linkedin.com',
:authorize_path => '/uas/oauth/authenticate',
:request_token_path =>'/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress+r_network+r_contactinfo',
:access_token_path => '/uas/oauth/accessToken' }
client = LinkedIn::Client.new("some_key", "some_secret", LINKEDIN_CONFIGURATION )
request_token = client.request_token(:oauth_callback =>
"http://#{request.host_with_port}/auth/callback")
session[:rtoken] = request_token.token # request token
session[:rsecret] = request_token.secret # request secret
redirect_to client.request_token.authorize_url
end
def create
@user = User.find_or_create_from_auth_hash(auth_hash)
self.current_user = @user
redirect_to '/'
end
protected
def auth_hash
request.env['omniauth.auth']
end
def callback
if session[:atoken].nil?
pin = params[:oauth_verifier]
atoken, asecret = client.authorize_from_request(session[:rtoken], session[:rsecret], pin)
session[:atoken] = atoken # authentication token
session[:asecret] = asecret # authentication secret
else
client.authorize_from_access(session[:atoken], session[:asecret])
end
@profile = client.profile(:fields => [:first_name]).first_name
@profiles = client.profile(:fields => [:last_name]).last_name
@positions = client.profile(:fields => %w(positions)).positions
@headline = client.profile(:fields => [:headline]).headline
@educations = client.profile(:fields => [:educations]).educations
@post = client.add_share({:comment => "blah"})
@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]
end
end
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :linkedin, "some_key", "some_secret", :scope => 'r_fullprofile r_emailaddress r_network', :fields => ["id", "email-address", "first-name", "last-name", "headline", "industry", "picture-url", "public-profile-url", "location", "connections"]
end
in views,
Headline : <%= @headline %>
</br>
Name : <%= @profile %> <%= @profiles %>
<%= @positions %>
<%= @post %>
<%= @user %>
<%= @educations %>
<%= @companies %>
</br>
<br/>
WELCOME !!!
You have successfully logged in to through Your LinkedIn Profile !!!
Upvotes: 0
Views: 1350
Reputation: 709
What do you mean by post? What exactly are you trying to post? I'm assuming you're looking to post network updates from your application. In that case, you'll need to grant your app "rw_nus" permissions. Just tack that member permission to your :request_token_path
:request_token_path =>'/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress+r_network+r_contactinfo+rw_nus'
Upvotes: 1