Robinhood使用Python请求模块请求帐户信息

时间:2019-01-23 17:16:31

标签: python curl python-requests

我正在尝试使用Python“请求”模块从Robinhood API中提取帐户信息。

def account_info():
    header = {"Accept": "application/json"}
    data = {"Authorization": "myactualtoken"}

    url = "https://api.robinhood.com/accounts/"
    r = requests.post(url, data=data, headers=header)
    print r.text
account_info()

这应该可以在Curl中使用:

curl -v https://api.robinhood.com/accounts/ \
   -H "Accept: application/json" \
   -H "Authorization: Token a9a7007f890c790a30a0e0f0a7a07a0242354114" #Token Not Real

当我尝试Python代码时,我得到:

"detail":"Authentication credentials were not provided."

1 个答案:

答案 0 :(得分:1)

如果您仔细观察,发现它会容易得多。卷曲中的-H添加了一个标题,因此从您的curl命令(我认为它正在运行)中,我可以看到Authorization: Token a9a...被设置为 header ,但是在您的python代码,则将其设置为 POST数据

因此,您的解决方案是将其简单地设置为标头,然后删除POST数据部分。

header = {
    "Accept": "application/json",
    "Authorization": "Token a9a..."
}

其余部分都很好。

更新:您完全错了。我以前没有检查过API文档,但是看了一眼之后,我现在发现您完全在做错事情。在进行POST查询时,受支持的方法是 GET 。加上已明确指定GET网址,该网址具有唯一的account_id并以positions/终结点结尾。

所以您的代码几乎是这样的:

def account_info(): 
    header = {
        "Accept": "application/json",
        "Authorization": "a9a..."
        }
    url = "https://api.robinhood.com/accounts/{account_id}/positions/" 
    r = requests.get(url, headers=header) 
    print r.text 
account_info()