代码之家  ›  专栏  ›  技术社区  ›  Mike C.

robinhod使用python请求模块请求帐户信息

  •  -1
  • Mike C.  · 技术社区  · 6 年前

    我尝试使用python“requests”模块从robinhod 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 -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 回复  |  直到 6 年前
        1
  •  2
  •   0xInfection Muhammad Faizan Fareed    6 年前

    如果你仔细观察,就很容易弄明白了。 -H 在curl中添加了一个header,所以从您的curl命令(我认为这是有效的)可以看出 Authorization: Token a9a... 被设置为 页眉 但是在您的python代码中,您将它设置为 邮政数据 .

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

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

    剩下的部分还可以。

    更新 你完全是做错了。我以前没有检查过这些API文档,但是在看了一眼之后,我现在发现你完全是做错了。支持的方法是 得到 ,当您进行后查询时,正好相反。另外,get url已指定,该url具有唯一的 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()