2011-04-07 165 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