2014-03-30 70 views
1

我正在嘗試爲Oauth1令牌和密鑰從Linkedin JSAPI交換一個Oauth2令牌。 As per the docs here與Ruby交換Linkedin JSAPI Oauth令牌

我已經向js庫提出了請求,登錄並接收了帶有Oauth2標記和簽名的cookie。

{ 
    "signature_version": "1", 
    "signature_method": "HMAC-SHA1", 
    "signature_order": [ 
     "access_token", 
     "member_id" 
    ], 
    "access_token": "j06JXCy1EB8plWmayCdUajMB6", 
    "signature": "i0HmB5LQPf8NOz", 
    "member_id": "hU7xxxxx" 
} 

現在我試圖爲Oauth1令牌服務器端交換訪問令牌。

根據該文件,我可以張貼到PARAMS:

'https://api.linkedin.com/uas/oauth/accessToken' 

包括以下PARAMS:

​​

我和捲曲做到了這一點,並得到一個消息,說簽名無效。這不是,我按照說明進行了檢查。

所以,我一直在嘗試使用OAuth寶石:再次

consumer = OAuth::Consumer.new(
    key, 
    consumer_secret, 
    { 
     :site => "https://api.linkedin.com", 
     :http_method => :post, 
     :request_token_path => "/uas/oauth/requestToken", 
     :access_token_path => "/uas/oauth/accessToken", 
     :authorize_path => "/uas/oauth/authorize", 
    } 
) 

request_token = consumer.get_request_token 
access_token = request_token.get_access_token({}, {:xoauth_oauth2_access_token => token}) 

而且,這給了我該死的簽名無效的錯誤!

你究竟應該如何交換這些令牌?我已經在Ruby上找到了有限的建議。

回答

0

我這樣做

consumer = OAuth::Consumer.new("[API KEY]", "[SECRET KEY]", { 
    :site => "https://api.linkedin.com", 
    :authorize_path => "/uas/oauth/authorize", 
    :request_token_path => "/uas/oauth/requestToken", 
    :access_token_path => "/uas/oauth/accessToken" 
}) 

然後:

client = OAuth::AccessToken.new(consumer, "[OAUTH USER TOKEN]", "[OAUTH USER SECRET]") 

然後你進行API調用是這樣的:

response = JSON.parse(client.get(url, "x-li-format" => "json").body) 

讓我知道,如果它可以幫助你。

+0

你定義了什麼網址var? – stonep

+0

@stonep網址如下:'/ v1/people/[USER_ID]','/ v1/people/url = [USER_URL]','/ v1/companies/[COMPANY_ID] :(id,name,num-追隨者)等等 – Shinta