2011-04-07 156 views
2

我需要獲取請求令牌才能使用LinkedIn API。OAuth授權 - 建立請求令牌

我想要發送該請求(通過POST)到:

https://api.linkedin.com/uas/oauth/requestToken 

與那些參數

'oauth_callback' => 'http://www.myserver.com/tokenReturned', 
'oauth_consumer_key' => '---', 
'oauth_consumer_secret' => '---', 
'oauth_nonce' => uniqid(time(), TRUE), 
'oauth_signature_method' => 'PLAINTEXT', 
'oauth_signature' => '---', 
'oauth_timestamp' => time(), 
'oauth_version' => '1.0' 

無論如何,LinkedIn服務器響應HTTP 100和該消息:

oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key&oauth_signature_method&oauth_signature&oauth_timestamp&oauth_nonce 

我在做什麼錯?我缺少哪個參數?

或者應該通過HTTP標頭髮送參數,而不是通過POST參數?

+0

您不打算髮送'consumer_secret'。除此之外,一切看起來都不錯...你可以發佈完整的代碼如何發送這個?也許在生成簽名或其他東西時出現錯誤... – Slava 2011-04-07 09:50:38

+1

嘗試使用標題儘管發送它。他們的文檔沒有提供任何特定的例子,但通常人們在'Authorization'頭部發送'oauth_ *'值。 – Slava 2011-04-07 10:07:40

+0

也許[this](http://code.google.com/p/simple-linkedinphp/)會幫助你。 – Slava 2011-04-07 10:44:01

回答

1

參數應該在「授權」HTTP標頭中發送。例如:

POST https://api.linkedin.com/uas/oauth/requestToken HTTP/1.1 
Authorization: OAuth oauth_callback="http%3a%2f%2flocalhost%3a2161%2flogin%2flinkedin", oauth_consumer_key="YOUR_KEY", oauth_nonce="SOME_NOUNCE", oauth_signature="YOUR_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="YOUR_TIMESTAMP", oauth_version="1.0" 
Host: api.linkedin.com 
Connection: Keep-Alive 

注意的幾件事情:

  • 你不應該把你的OAuth用戶端密鑰
  • 回調URL需要編碼

更多信息請訪問: http://developer.linkedin.com/docs/DOC-1245