Ruby on Rails アプリケーションを介して Linkedin に投稿することは可能ですか。もしそうなら、どうすればいいのか教えてください。
私はたくさんグーグルで検索しましたが、うまくいく正しい解決策が得られませんでした。
私のコードは次のとおりです。
コントローラー用、
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
ビューでは、
Headline : <%= @headline %>
</br>
Name : <%= @profile %> <%= @profiles %>
<%= @positions %>
<%= @post %>
<%= @user %>
<%= @educations %>
<%= @companies %>
</br>
<br/>
WELCOME !!!
You have successfully logged in to through Your LinkedIn Profile !!!