2

ストライプ接続に対する認証に 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 ...

私の問題は、「サービス」変数を​​ビューの外に配置するのはどういうわけか間違っていると感じていることですが、これを実際に処理する方法がわかりません。別のモジュールに分割し、設定ファイルに配置し、デコレータを作成する必要がありますか? よくわかりません。

どんなアドバイスでも大歓迎です。

4

1 に答える 1

1

通常、次のように 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',
)

それにより、簡単にアクセスできます。

于 2016-04-16T16:28:26.920 に答える