代码之家  ›  专栏  ›  技术社区  ›  user1387717

Linkedin OAuth通过curl而不是urllib-python获取访问令牌

  •  0
  • user1387717  · 技术社区  · 12 年前

    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”

    帮助

    1 回复  |  直到 12 年前
        1
  •  0
  •   user1387717    12 年前

    我做了一件蠢事。我已经将参数传递到了正文中,并将其作为URL末尾的参数。