-1
내 데코 레이팅 된 함수의 매개 변수가 바뀌고 있습니다. authorized(self, resp)
에서 resp
은 ClientView
개체가되고 self
은 resp
변수가됩니다. 어떻게이 함수를 메서드로 사용하여 메서드로 사용할 수 있습니까?Python - 클래스의 장식 함수 사용
플라스크 클래스 뷰와 flask_oauthlib을 사용합니다.
기능 코드 :
class ClientView(UserView):
@bp.route('/vklogin/authorized')
@vk.authorized_handler
def authorized(self, resp):
if resp is None:
return 'Access denied: reason=%s error=%s' % (
request.args['error_reason'],
request.args['error_description']
)
session['oauth_token'] = (resp['access_token'], '')
me = self.vk.get('method/users.get?uids={}'.format(resp['user_id']))
return '{}'.format(me.data)
데코레이터 기능 코드 :
class OAuthRemoteApp(object):
def authorized_handler(self, f):
@wraps(f)
def decorated(*args, **kwargs):
if 'oauth_verifier' in request.args:
try:
data = self.handle_oauth1_response()
except OAuthException as e:
data = e
elif 'code' in request.args:
try:
data = self.handle_oauth2_response()
except OAuthException as e:
data = e
else:
data = self.handle_unknown_response()
# free request token
session.pop('%s_oauthtok' % self.name, None)
session.pop('%s_oauthredir' % self.name, None)
return f(*((data,) + args), **kwargs)
return decorated