使用Etrade API查询参数时返回401未授权问题求助
Etrade生产API添加查询参数后返回401未授权问题
我在使用Etrade生产API时遇到了一个问题:只要给接口添加任何查询参数,响应就会返回401未授权;但不添加参数时,能正常收到200成功响应。代码基本参照官方Python示例编写,相关API文档为账户组合接口说明。
授权获取代码
import configparser from rauth import OAuth1Service import webbrowser # 加载配置文件 config = configparser.ConfigParser() config.read("etrade_python_client/config.ini") etrade = OAuth1Service( name="etrade", consumer_key=config["DEFAULT"]["PROD_KEY"], consumer_secret=config["DEFAULT"]["PROD_SECRET"], request_token_url="https://api.etrade.com/oauth/request_token", access_token_url="https://api.etrade.com/oauth/access_token", authorize_url="https://us.etrade.com/e/t/etws/authorize?key={}&token={}", base_url="https://api.etrade.com") request_token, request_token_secret = etrade.get_request_token(params={"oauth_callback": "oob", "format": "json"}) authorize_url = etrade.authorize_url.format(etrade.consumer_key, request_token) webbrowser.open(authorize_url)
这段代码会打开浏览器,登录后复制授权码并保存为text_code,接着执行以下代码:
带查询参数请求代码(返回401)
text_code = "<从浏览器复制的授权码>" session = etrade.get_auth_session(request_token, request_token_secret, params={"oauth_verifier": text_code}) # 获取账户信息 url_account = "https://api.etrade.com/v1/accounts/list.json" data_account = session.get(url_account, header_auth=True).json() # 存储账户ID密钥 account_id_key = data_account["AccountListResponse"]["Accounts"]["Account"][0]["accountIdKey"] # 获取投资组合并指定*sortOrder=ASC*参数 url_portfolio = "https://api.etrade.com/v1/accounts/{}/portfolio?sortOrder=ASC".format(account_id_key) data_portfolio = session.get(url_portfolio, header_auth=True) print(data_portfolio)
执行结果:
>>> <Response [401]>
不带查询参数请求代码(返回200)
# 获取投资组合,不指定排序参数 url_portfolio = "https://api.etrade.com/v1/accounts/{}/portfolio".format(account_id_key) data_portfolio = session.get(url_portfolio, header_auth=True) print(data_portfolio)
执行结果:
>>> <Response [200]>
有没有人遇到过这个问题?我怀疑是传递查询参数的方式不正确。
内容的提问来源于stack exchange,提问作者Riley Finn
相关产品推荐
相关产品推荐

