gpt4 book ai didi

python - 流量交换错误: invalid_grant in flask application

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:01 30 4
gpt4 key购买 nike

我正在创建一个 API 来包装 google oauth。我正在使用谷歌Python客户端库。

api.py 中的代码

from flask import request, g
from ..helpers import config_helper
from ..adapters.youtube.oauth_adapter import OauthAdapter
from ..api import api_blueprint as api


@api.before_app_request
def before_request():
client_id, client_secret, scope, callback = config_helper.get_config()
g.auth = OauthAdapter(client_id, client_secret, scope, callback)


@api.route('/authorisation_url/')
def authorisation_url():
auth = g.get('auth', None)
return auth.get_authorisation_url()


@api.route('/oauth2callback/')
def callback():
authorisation_code = request.args.get('code')
return authorisation_code


@api.route('/save_oauth2credential/', methods=['POST'])
def oauth2_credentials():
auth = g.get('auth', None)
user = request.form.get('user')
authorisation_code = request.form.get('authorisation_code')
auth.save_credentials(user, authorisation_code)


@api.teardown_app_request
def after_request(response):
g.auth = None
return response

oauth_adapter.py 中的代码

from oauth2client.client import OAuth2WebServerFlow
from ..repositories import oauth_credentials_repository


class OauthAdapter:
def __init__(self, client_id, client_secret, scope, callback):
self.flow = OAuth2WebServerFlow(client_id=client_id,
client_secret=client_secret,
scope=scope,
redirect_uri=callback)

def get_authorisation_url(self):
return self.flow.step1_get_authorize_url()

def save_credentials(self, user, authorisation_code):
credentials = self.flow.step2_exchange(authorisation_code)
oauth_credentials_repository.save(user, credentials, 'Google')

我需要针对登录用户保存凭据对象,以便稍后可以使用它代表该用户调用其他 google api。

当我调用 @api.route('/save_oauth2credential/',methods=['POST']) 来使用 @api.route('/oauth2callback/') 步骤中检索到的authorization_code 来检索凭据时。我不断收到 FlowExchangeError: invalid_grant

有什么想法吗?

最佳答案

查看 Chrome Devtools 中的网络对话,看看网络上发生了什么。我猜想那里有一个 403 无效的授权响应。所以你需要找出无效授权的原因。我刚刚在 Getting 'invalid_grant' error with google oauth from second time 发布了一些可能的解释

一般来说,您需要做两件事。

首先,检查您的代码是否正确,您的范围和客户端 ID 是否可靠,以及您是否正确保存了刷新 token 。

完成所有这些操作后,您需要将无效授权视为职业危害,并重新提示用户进行授权以获得新的刷新 token 。

关于python - 流量交换错误: invalid_grant in flask application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18563629/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com