在为OAuth令牌交换LinkedIn JSAPI令牌时获取oauth_problem = signature_invalid

时间:2015-01-29 20:29:48

标签: linkedin

我正在关注文档中的链接以交换OAuth 1.0a令牌的JSAPI令牌。 (https://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens

我在交换过程中遇到以下错误:

oauth_problem = signature_invalid&安培; oauth_problem_advice = com.linkedin.security.auth.pub.LoginDeniedInvalidAuthTokenException%20while%20obtaining%20request%20token%20for%20%3APOST%26https%253A%252F%252Fapi.linkedin.com%252Fuas%252Foauth %252FaccessToken%26oauth_consumer_key%253D751oglji2r3e9e%2526oauth_nonce%253D1422656976%2526oauth_signature_method%253DHMAC-SHA1%2526oauth_timestamp%253D1422656976654%2526oauth_version%253D1.0%2526xoauth_oauth2_access_token%253DzdLOTq4fVfiSBS4WP_FkEgL942vbUkpsH4gH%0ACONN%3AO%7C4245561%7C3241891%7C7315878%7C4307091%7C%2A02%3A1422656976%3AgwtcYNp1ZiULkjvCXvnbOWM2fps %253D

我使用LinkedIn OAuth测试控制台来测试我的签名算法 (https://developer.linkedin.com/oauth-test-console) 我确认我正在构建相同的base_string并获得与测试控制台相同的签名。

但是我仍然收到signature_invalid错误,这表示我可能错误地构建了HTTP POST请求。

这就是我的要求:

POST / uas / oauth / accessToken HTTP / 1.1 授权:OAuth oauth_consumer_key =" 751oglji2r3e9e",oauth_nonce =" 1422654439",oauth_signature =" vif9BS8MFNdjTWCagrs%252Fn8gNa1Y%253D",oauth_signature_method =" HMAC-SHA1&# 34;,oauth_timestamp =" 1422654439035",oauth_version =" 1.0" 内容类型:application / x-www-form-urlencoded 缓存控制:无缓存 Pragma:没有缓存 用户代理:Java / 1.7.0_71 主持人:api.linkedin.com 接受:text / html,image / gif,image / jpeg,*; q = .2, / ; Q = 0.2 连接:关闭 内容长度:63

xoauth_oauth2_access_token = AykDWuciDtpUQ_2tY4y3sKOOqOD6JXUSwuZR

我在网址上编码了我的签名,因为这是其他一些帖子的建议。这是正确的方法吗?

来自LinkedIn的错误消息并未明确签名无效的原因。

1 个答案:

答案 0 :(得分:0)

重新检查Authorization标头中的签名,看起来我在将其放入Authorization标头时错误地将URL编码签名两次。

一旦我解决了这个问题,我就能获得访问令牌。