LinkedIn API有两部分:1)从LinkedIn获取授权码(get请求)2)使用授权码10秒左右从LinkedIn获得访问令牌(POST请求)。我的请求示例如下:
下面的第一部分,我可以在浏览器中成功完成,重定向到LinkedIn,并获得授权代码。
https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=XXXXX&state=ddlkjdfkljdfkljdfk&redirect_uri=http%3A//localdev.boxuno.com%3A8888/auth/linkedinOauth1Callback
第二部分,我可以成功地使用curl,如下所示。
curl-v--data“grant_type=authorization_code&code=XXXXX&redirect_uri=http://localdev.boxuno.com%3A888/auth/linkedinOauth1Callback&client_id=XXXXX&client_secret=XXXXX”
https://www.linkedin.com/uas/oauth2/accessToken
但是如果我在Python中使用urllib来构造http POST请求。这不管用:我得了400分。
response=urllib2.urlopen(urllib2.Request(url,urllib.urlencode({‘code‘:‘XXXXX‘,‘grant_type‘:‘authorization_code‘,‘redirect_uri‘:‘http://localdev.boxuno.com%3A888/auth/linkedinOauth1Callback‘,‘client_id‘:‘XXXXXX‘,‘client _secret‘:‘XXXX}))))
我已经在步骤1&2匹配,我快速调用第二步(这样授权代码不会过期),并确保两个调用中的client_id匹配。我不明白为什么Python版本总是失败,但curl版本是有效的。还尝试在b/c下面显式添加头,curl请求有它,但没有骰子。
“内容类型”:“类型:application/x-wwww-form-urlencoded”
帮助