【发布时间】:2016-10-06 16:46:41
【问题描述】:
我正在尝试编写一个 Python 脚本,通过我的命令行,我可以:
登录到 Trello
使用Trello Python API 从 Trello 看板等检索数据。
我只能使用 Python 2.7.6,所以请不要提供任何 Python 3 建议——我将无法使用它们。
我可以使用 requests 模块登录 Trello;但是,为了能够使用 Trello API,我一直在检索用户密钥。
这是我目前正在做的事情:
import trello
import requests
# Not shown: retrieve username and password from user
sess = requests.Session()
loginData = {
'method': 'password',
'factors[user]': username,
'factors[password]': password
}
TRELLO_LOGIN_URL = "https://trello.com/1/authentication"
resp = sess.post(TRELLO_LOGIN_URL, trelloLogin) # resp => <Response [200]>
此时,resp.text 包含一个字典(在 JavaScript 或 Python 中同样适用),其中包含一个键 code,其值是很长的乱码字符串)。我假设这(以及响应对象中的 200 状态代码)意味着我成功登录。
所以,现在我(大概)已经登录了,我从 API 请求令牌 URL:
api = trello.TrelloApi(MY_API_KEY)
tokenUrl = api.get_token_url('MyApp') # => https://trello.com/1/authorize?key=<mykey>&name=MyApp&expiration=30days&response_type=token&scope=read,write
但是当我尝试使用该 URL 时:
sess.get(tokenUrl)
我得到的响应文本(由授权页面的 HTML 组成)有一个“登录”按钮,而不是我在浏览器中执行此操作时看到的“批准”按钮。对我来说,这表明 requests.Session 对象没有正确持久化。也许它在 get() 请求中使用了不正确的 cookie 或其他内容?
老实说,我并不关心问题的具体细节,只关心我必须做些什么来解决它。如何使会话持续到 get() 调用,以便我可以做下一部分?
(当然,完全有可能——甚至很可能——我的方法从一开始就不正确,但我找不到任何文档来告诉我应该做些什么不同,所以这是最好的我可以从我找到找到的东西中想出。如果有关于以另一种方式执行此操作的说明——但仍然是从命令行——请随时指出我。)
【问题讨论】:
-
忘了说:
TRELLO_LOGIN_URL = https://trello.com/1/authentication。添加到原始问题。
标签: python python-requests trello