我正在尝试使用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."
答案 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()