首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >authlib.integrations.base_client.errors.MismatchingStateError

authlib.integrations.base_client.errors.MismatchingStateError
EN

Stack Overflow用户
提问于 2021-05-17 18:13:05
回答 1查看 374关注 0票数 0

试图用贸易站为flask_client获取一个令牌。

代码语言:javascript
复制
baseurl='https://sim-api.tradestation.com/v2'

oauth.register(
    name='tradestation',
    client_id=api_key,
    client_secret=api_secret,
    access_token_url=baseurl+'/security/authorize',
    access_token_params={ 'grant_type': 'authorization_code' },
    authorize_url=baseurl+'/authorize',
    authorize_params=None,
    api_base_url=baseurl,
    client_kwargs={
        'scope': 'marketdata', # ,trade — for later
        'response_type': 'code',
        'token_endpoint_auth_method': 'client_secret_post',
    },
)

@app.route('/authorize')
def authorize():
    print(flask.request.args.get('state'), flask.session.get('_tradestation_authlib_state_'))
    token = oauth.tradestation.authorize_access_token()

登录部分工作正常,我被重定向到tradestation登录页面,输入凭据后,我被重定向到本地主机。在烧瓶输出中,我看到:

代码语言:javascript
复制
GET /authorize?code=<long_code> HTTP/1.1

它返回authorize_access_token()的这个异常。调试打印确实表明状态为无。通过查看代码,我发现它希望从url获取状态,并且它丢失了:

代码语言:javascript
复制
None c3GjcENWIe7Qg3FdQNYn1iSCuU1jZC

我是不是把参数记错了?还没有到token_endpoint_auth_method,我也找不到其他参数的任何错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 11:02:13

做这件事的方式有点刺耳,最后我得到了记号:)

代码语言:javascript
复制
state=flask.session.get('_tradestation_authlib_state_')
flask.request.args=ImmutableMultiDict({**flask.request.args, 'state': state})

因此,遭受相同检查的人可以使用这种快速而肮脏的方法来运行它,但也可能会出现一些更好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67575010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档