Robinhood Запрос информации об учетной записи с использованием модуля Python Requests - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь использовать модуль 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 голосов
/ 23 января 2019

Если вы присмотритесь, это будет гораздо проще понять.-H в curl добавляет заголовок, поэтому из вашей команды curl (которая, как я полагаю, работает) я вижу, что Authorization: Token a9a... устанавливается как заголовок , но в вашем коде Python вы 'переустанавливая его как POST data .

Итак, ваше решение - просто установить его в качестве заголовка и удалить часть данных POST.

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

Остальная часть в порядке.

Обновить: Вы все делаете неправильно.Я раньше не проверял документацию по API, но, посмотрев на нее, теперь я понимаю, что вы все делали неправильно.Поддерживается метод GET , в то время как вы выполняли запрос POST, с точностью до наоборот.Кроме того, URL-адрес GET был сделан конкретным, 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...