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%3A // localdev.boxuno.com%3A8888 / 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%3A // localdev.boxuno.com%3A8888 / auth / linkedinOauth1Callback','client_id':'XXXXX','client_secret':'XXXXX})))
我已确定步骤1和步骤1中的重定向URI 2匹配,我快速调用第二步(因此授权代码不会过期),并确保client_id在两个调用中都匹配。我不明白为什么Python版本总是失败但curl版本有效。还尝试在b / c下明确添加标题,curl请求有它,但没有骰子。 “Content-Type”:“Type:application / x-www-form-urlencoded”
帮助!
答案 0 :(得分:0)
我做了一些愚蠢的事。我已经传递了主体和作为URL末尾参数的参数。