我正在使用rauth对条带连接进行身份验证。在这样做时,我需要实例化OAuth2Service以在多个视图中使用。现在我的视图文件看起来很像这样(并且有效),但这感觉不对:
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 ...
我的问题是我觉得将“服务”变量放在视图之外是不对的,但我不确定我应该如何处理这个问题。我应该把它拆分成一个单独的模块,把它放在设置文件中,创建一个装饰器?我不是很确定。
非常感谢任何建议。
答案 0 :(得分:0)
我通常将它作为属性添加到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',
)
这使得它易于访问。