【发布时间】:2016-06-17 06:03:22
【问题描述】:
我正在尝试获取一些工作代码并将 urlib2 更改为请求。 原始代码提供了用户名、密码的基本登录信息,并在 urllib2 请求的标头中发布了 KEY 和 SECRET。以下代码是我尝试更改为使用 requests 模块并获得一些功能以进行额外的 API 调用。我尝试了几十种组合,都返回代码 400。显然,我的请求代码没有成功提供所需的信息来返回 200 响应并提供所需的授权令牌。
## Import needed modules
import urllib2, urllib, base64
import httplib
import requests
import json
## initialize variables
KEY = "7f1xxxx-3xxx-4xxx-9a7f-8be66839dede"
SECRET = "45xxxxxx-45xxx-469a-9ae9-a7927a76cfeb"
userName = "my-email@xxx.com"
passWord = "mypassword"
URL = "https://company.com/auth/token"
token = None
sessionid = None
DATA = urllib.urlencode({"grant_type":"password",
"username":userName,
"password":passWord})
base64string = base64.encodestring('%s:%s' % (KEY, SECRET)).replace('\n', '')
request = urllib2.Request(URL, DATA)
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
token = result.read()
print token
这将返回我的授权令牌,一切都很好。我可以将令牌传递给授权服务器,并且可以完全访问用于与数据库交互的 api。下面是尝试使用请求并具有它提供的附加功能。
client = requests.session()
payload = {"grant_type":"password",
"username":userName,
"password":passWord,
"applicationId": KEY
}
headers = {'content-type':'application/json',
"grant_type":"password",
"username":userName,
"password":passWord,
'applicationsId': KEY,
'Authorization': base64string,
'token': token,
'sessionid': sessionid
}
response = client.post(URL, params = payload, headers=headers)
token = response.content
print token
{"error":"invalid_request"}
print response
<Response [400]>
【问题讨论】:
标签: python-2.7 python-requests