繁体   English   中英

使用Rauth和Django正确创建OAuth2Service

[英]Properly creating OAuth2Service with Rauth and Django

我正在使用rauth对带区连接进行身份验证。 为此,我需要实例化一个OAuth2Service以便在多个视图中使用。 现在,我的views文件看起来很像这样(并且可以工作),但是这感觉很不对:

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 ...

我的问题是,我觉得将“ service”变量放在视图之外有点不对劲,但是我不确定我应该如何处理。 我应该将其拆分为一个单独的模块,将其放置在设置文件中,创建一个装饰器吗? 我不确定。

任何意见是极大的赞赏。

我通常将其作为属性添加到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',
)

这使其易于访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM