当前位置: 首页 > 知识库问答 >
问题:

使用Python访问交易平台的API

史淳
2023-03-14

我刚开始使用API和Python获取数据。我想从我的交易平台中提取数据。他们提供了以下说明:

http://www.questrade.com/api/documentation/getting-started

我可以完成步骤4,并有一个访问令牌。我需要第五步的帮助。我如何翻译这个请求:

GET /v1/accounts HTTP/1.1
Host: https://api01.iq.questrade.com
Authorization: Bearer C3lTUKuNQrAAmSD/TPjuV/HI7aNrAwDp

进入Python代码?我已经试过了

import requests
r = requests.get('https://api01.iq.questrade.com/v1/accounts', headers={'Authorization': 'access_token myToken'})

我读了这个后尝试:Python请求与身份验证(access_token)

任何帮助都将不胜感激。谢谢

共有2个答案

夹谷茂
2023-03-14

改进彼得的回复(谢谢彼得!)首先使用从QT网站获得的令牌获得access_token并获得分配来处理请求的api_server。

# replace XXXXXXXX with the token given to you in your questrade account

import requests

r = requests.get('https://login.questrade.com/oauth2/token?grant_type=refresh_token&refresh_token=XXXXXXXX')

access_token = str(r.json()['access_token'])
refresh_token= str(r.json()['refresh_token']) # you will need this refresh_token to obtain another access_token when it expires
api_server= str(r.json()['api_server'])
token_type= str(r.json()['token_type'])
api_server= str(r.json()['api_server'])
expires_in = str(r.json()['expires_in'])

# uri = api_server+'v1/'+[action] - let's try checking the server's time:
uri = api_server+'v1/'+'time'
headers = {'Authorization': token_type +' '+access_token}
# will look sth like this
 
#    headers will look sth like    {'Authorization': 'Bearer ix7rAhcXx83judEVUa8egpK2JqhPD2_z0'}
#        uri will look sth like    'https://api05.iq.questrade.com/v1/time'

# you can test now with
r = requests.get(uri, headers=headers)
response = r.json()
print(response)
季骏祥
2023-03-14

正如您所指出的,在步骤4之后,您应该已收到如下访问令牌:

{
    “access_token”: ”C3lTUKuNQrAAmSD/TPjuV/HI7aNrAwDp”,
    “token_type”: ”Bearer”,
    “expires_in”: 300,
    “refresh_token”: ”aSBe7wAAdx88QTbwut0tiu3SYic3ox8F”,
    “api_server”: ”https://api01.iq.questrade.com”
}

要进行后续API调用,您需要按如下方式构造URI:

uri = [api_server]/v1/[rest_operation]

e.g.
uri = "https://api01.iq.questrade.com/v1/time"

Note: Make sure you use the same [api_server] that you received in your json object from step 4, otherwise your calls will not work with the given access_token

接下来,按如下方式构造标题:

headers = {'Authorization': [token_type] + ' ' + [access_token]}

e.g.
headers = {'Authorization': 'Bearer C3lTUKuNQrAAmSD/TPjuV/HI7aNrAwDp'}

最后,请按以下方式拨打您的请求电话

r = requests.get(uri, headers=headers)
response = r.json()

希望这有帮助!

注意:你可以在GitHub上找到一个Questrade API Python包装器,它可以为你处理所有上述内容。https://github.com/pcinat/QuestradeAPI_PythonWrapper

 类似资料:
  • 我想从我客户的PayPal帐户提取交易数据。他给了我API用户名、p/w和签名。此外,我们还在developer上创建了一个实时“应用程序”。贝宝。现在我有了一个客户ID和秘密。 我有asp.net/c#RestAPiSample代码。我应该调用哪个(REST或SOAP)API来获取“销售”数据(即,从他的客户到他的贝宝账户的付款?基本上,我试图使用销售数据创建一些额外的报告。 谢谢。

  • 纯八股,无项目coding 1. Kafka消息消费有序性如何保证 2.数据库与缓存的一致性保证 3.ThreadLocal原理,ThreadLocal线程池信息传递问题 4.MySQL limit分页查询优化 5.Redis zset数据结构,跳表的查询时间复杂度 事前hr告诉我第一轮有coding 结果面试官告诉我无 之前面字节 重点在于系统设计,快手重点在于项目,得物直接纯八股,麻了,真就是

  • 我对平台有几个问题。稍后运行。我有一个JavaFX应用程序类。在这个类中,我运行一个线程(线程从网络套接字读取数据)。 现在,当我在线程中创建一个新的时,系统会抛出一个执行(JavaFX事件调度器线程和我的netork-read线程不一样)-我理解这种行为。 但另一方面,我将来自网络阅读器的文本附加到现有的文本区域,或者在列表视图中添加/删除一些项目 我的问题: JavaFX事件调度器线程何时引发

  • 问题内容: 我正在使用Angel List(AL)API,想撤出San San Francisco的所有工作。由于找不到适用于api的有效Python包装器(如果取得了进展,我想自己做一个),所以我使用了请求库。 AL API的结果是分页的,我无法弄清楚如何超越结果的第一页。 这是我的代码: 我尝试在上添加参数,但这没有用。我还尝试了一些非常愚蠢的操作-更改’page’键的值对我来说是不可思议的。

  • 我收到了谷歌的电子邮件;他们说我被列为以下项目的管理员:。 他们的目标是让谷歌云平台客户更容易找到和理解服务条款、弃用政策和服务水平协议,涵盖所有当前和未来的云平台产品和服务: Google Cloud Platform团队希望确保您了解我们最近对Google App Engine服务条款(ToS)所做的一些更改,以及我们向用户传达弃用策略和服务水平协议(SLA)信息的方式和位置。 我的问题是:我

  • 乐易拍信息平台主要为企业实现电子商务提供一个快捷的解决方案.通过本方案系统,可以加快开发速度,降低开发成本.搭建高效、稳定、可拓展的系统。 本系统运用asp.net 2.0开发,数据库使用SQL2000(可以放在SQL2005上),包括前台和后台两个部分。 前台主要运用jquery+CSS 构建的展示订购平台。 后台是运用CSS+EXTJS构建的一个完整的权限管理+销售订单管理的系统。主要功能: