如何在python中使用urllib2获取身份验证令牌?

时间:2013-11-23 07:12:52

标签: python curl

我想在python中使用urllib2获取身份验证令牌。 我的程序是(我更改了凭证):

import urllib2
import urllib

USER_NAME = 'me'
USER_PASSWORD = 'mypass'

url = "http://myurl.org/oauth/token"

query_args = { "grant_type":"password",
               "username":USER_NAME,
               "password":USER_PASSWORD,
               "client_secret":'123',
                'client_id':'456'}

encoded_args = urllib.urlencode(query_args)
print urllib2.urlopen(url, data=encoded_args).read()

运行结果为403 Error: Forbidden。 但是,我可以使用终端中的curl获取身份验证令牌:

curl -X POST "url" -d "credentials"

我在python代码中使用了“url”和“凭据”(以获取我打印出来的“凭据”字符串encoded_args)。

如何使用urllib2获取身份验证令牌?

1 个答案:

答案 0 :(得分:1)

首先,您不应在同一应用程序中混用urlliburllib2urllib2urllib的继承者,并会做同样的事情。

这里真正的答案是使用支持OAuth的库来python-oauth2来为你做繁重的工作。或者更好的是,从urllib2切换到稍微更高级别的包requests,并使用他们的brilliant oauth plugins中的一个来获得一个解决问题的解决方案!