Stripe API; {'错误':' invalid_grant',' error_description':'此授权码已被使用

时间:2018-04-22 03:45:38

标签: python flask stripe-payments

我正在使用Stripe API,并尝试在db中保存连接帐户密钥。但我无法成功地拯救他们,并且发生了一件奇怪的事情。 我的代码在这里

resp = stripe_connect_service.get_raw_access_token(method='POST', data=data)
connect_account_info = json.loads(resp.text)
connect_public_key = connect_account_info['stripe_publishable_key']
connect_access_token = connect_account_info['access_token']
connect_user_id = connect_account_info['stripe_user_id']
connect_refresh_token = connect_account_info['refresh_token']

print(connect_public_key)
print(connect_access_token)
print(connect_user_id)
print(connect_refresh_token)

form = Form()
if form.validate_on_submit():
    data = Data(connect_public_key=connect_public_key, connect_access_token=connect_access_token, connect_user_id=connect_user_id, connect_refresh_token=connect_refresh_token)
    db.session.add(data)
    db.session.commit()

因此,在获取令牌并完成从Stripe Connect页面重定向的页面上提交表单后,我将保存数据。 print实际上显示了连接帐户密钥,但在提交表单后,错误说明了 connect_public_key = connect_account_info [' stripe_publishable_key'] KeyError:' stripe_publishable_key' 即使印刷确实有效。

当我运行调试器时,错误就像这样说 {'error': 'invalid_grant', 'error_description': 'This authorization code has already been used.

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

当您的代码错误地重新使用您在URL中获得的授权代码(ac_XXXX)时,通常会发生此错误。

这通常是在刷新重定向后重新启动的浏览器/页面时引起的。您的代码将从URL获取代码并使用它在/oauth/token端点上进行交换,但如果您执行两次,则会因安全原因导致连接被撤销。

答案 1 :(得分:0)

就我而言,是我的服务器在失败时重试最终导致此错误响应。

所以就我而言,问题是我的服务器的功能在从代码中获取令牌后在不同的地方崩溃了。

在函数崩溃后,由于服务器设置为重试,它再次使用相同的参数调用端点,在第二次尝试中,代码确实已经使用,因此出现错误。

也许它也可以帮助某人。