使用Python请求进行代码/令牌交换

时间:2016-01-23 20:34:49

标签: python api python-requests

我在使用Figo的API(documentation here)获得正确答案时遇到问题

我正在运行一个设法连接和登录的python脚本,但是我得到一个包含相同表单的html的响应,尽管响应的状态是:200

由于我想在没有Web浏览器界面的情况下在我的服务器上执行所有操作,并且需要使用令牌来执行我需要对API执行的所有操作,因此我非常感谢帮助您解决以下问题:

到目前为止

代码:

import requests


url = 'https://api.figo.me/auth/code'
username = 'demo@figo.me'
password = 'demo1234'
client_id = 'CaESKmC8MAhNpDe5rvmWnSkRE_7pkkVIIgMwclgzGcQY'

payload = {'response_type': 'code', 'client_id': client_id, 'scope': 'accounts=ro+transactions=ro', 'state': 'xqD6gjWygsBlF0uB'}

r = requests.get(url, params=payload, allow_redirects=False)

login_redirect = r.headers['location']

a = requests.get(login_redirect, auth=(username, password))

此处,r是初始回复(没有重定向),因此我可以获取登录表单的网址。

如果我手动将login_redirect的结果放入我的webbrowser,我会看到一个登录表单弹出,然后在同一个url下,确认表单要求我选择一个选项然后接受。如果我手动执行此操作,我最终会重定向到以下内容:

http://localhost:3000/callback?state=xqD6gjWygsBlF0uB&code=OWcCVv2jAIgtAC7hDtVnj0s5h-wE6EVVWvFEumRxYlj-7RmtyvuxZCwfU2MgwcDM939Sx7ZSHVo87fJh-W0xYSzEVmWNj6MzyOr2CPsp0RCo

其中确实包含了我最终需要的身份验证码!但话说回来,我需要在没有网络界面的情况下完成这项工作。

修改

我目前正在尝试使用selenium for Python进行表单交互。 如果我找到了什么会更新。

编辑2:

硒没有运气,我使用的网络服务器不支持。

0 个答案:

没有答案