TDAmeritrade API получает позиции пользователей

#python #json

#python #json

Вопрос:

Я создаю программное обеспечение для отслеживания моего портфеля и торговли. В настоящее время я пытаюсь получить позиции своего аккаунта из TD API.

 acct_endpt = 'https://api.tdameritrade.com/v1/accounts/{accountId}'
full_url_acct = acct_endpt.format(accountId='accountId')

account = requests.get(url=full_url_acct,
                       params={'fields' : 'positions', 'apikey' : 'apikey'})

acct_content = json.loads(account.content)
 

Мой приведенный выше код возвращает мне следующую ошибку:

json.decoder.JSONDecodeError: Expecting value: line 2 column 11 (char 11)

Обновление: я удалил строку, содержащую json.loads() , поскольку она возвращала ошибку 401 [Сообщение об ошибке, указывающее, что вызывающий абонент должен передать действительный authToken в заголовке запроса авторизации HTTP]. Должно быть, я fields неправильно передаю параметры apikey and . Как будет выглядеть синтаксис для правильной передачи этих параметров?

Ответ №1:

Ваши параметры выглядят правильно, но я думаю, что форматирование URL не делает то, что вы хотите. Вместо этого вы можете отформатировать свой URL-адрес с помощью f-string следующим образом:

 accountId = "ACCOUNT_ID"
acct_endpt = f"https://api.tdameritrade.com/v1/accounts/{accountId}"
 

Комментарии:

1. Однако используемая f-строка по-прежнему возвращает ошибку 401. Это означает, что он не получает мой ключ api / авторизации. Как я могу это исправить?

2. @BrianCos Просматривает документацию по API TD Ameritrade, похоже, что здесь используется токен на предъявителя. До этого вызова вы получаете токен на предъявителя через API токена доступа к Post? Источники: Учетные записи: developer.tdameritrade.com/account-access/apis/get/accounts /… Токен на предъявителя: developer.tdameritrade.com/authentication/apis/post/token-0