Skip to main content
 首页 » 编程设计

python之使用 Rauth 和 Django 正确创建 OAuth2Service

2025年05月04日44luoye11

我正在使用 rauth 对 stripe connect 进行身份验证。为此,我需要实例化一个 OAuth2Service 以便在多个 View 中使用。现在我的 View 文件看起来很像这样(并且有效),但这感觉不对:

from rauth.service import Oauth2Service 
 
service = OAuth2Service( 
    name = 'stripe', 
    client_id = 'my_client_id', 
    client_secret = 'my_secret', 
    authorize_url = 'auth_url', 
    access_token_url = 'stripe_access_token_url', 
    base_url = 'stripe_api_url', 
) 
 
def stripe_auth(request): 
    params = {'response_type': 'code'} 
    url = service.get_authorize_url(**params) 
    return HttpResponseRedirect(url) 
 
def stripe_callback(request): 
    code = request.GET['code'] 
    data = { 
        'grant_type': 'authorization_code', 
        'code': code 
    } 
    resp = service.get_raw_access_token(method='POST', data=data) 
    ... rest of view code ... 

我的问题是,我觉得将“服务”变量放在 View 之外有点不对,但我不确定我真正应该如何处理这个问题。我应该把它拆分成一个单独的模块,把它放在设置文件中,创建一个装饰器吗?我不太确定。

非常感谢任何建议。

请您参考如下方法:

我通常将它作为属性添加到 Flask Application 对象中,如下所示:

app = Flask(....) 
app.stripe = OAuth2Service( 
    name = 'stripe', 
    client_id = 'my_client_id', 
    client_secret = 'my_secret', 
    authorize_url = 'auth_url', 
    access_token_url = 'stripe_access_token_url', 
    base_url = 'stripe_api_url', 
) 

这使得它易于访问。