python-social-auth AuthCanceled异常 [英] python-social-auth AuthCanceled exception

查看:233
本文介绍了python-social-auth AuthCanceled异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Django应用程序中使用python-social-auth进行身份验证。
但是当用户尝试登录时,当被重定向到Facebook应用页面点击取消按钮时,会出现以下异常:

 错误2014-01-03 15:32:15,308 base ::内部服务器错误:/ complete / facebook / 
追溯(最近最近呼叫):
文件/ home / vera / virtualenv / myapp / local / lib / python2.7 / site-packages / django / core / handlers / base.py,第114行,在get_response中
response = wrapped_callback(request,* callback_args,** callback_kwargs )
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/django/views/decorators/csrf.py,第57行,wrapped_view
return view_func (* args,** kwargs)
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/apps/django_app/utils.py,第45行,包装
返回func(请求,后端,* args,** kwargs)
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/apps/ django_app / views.py,第21行,完成e
redirect_name = REDIRECT_FIELD_NAME,* args,** kwargs)
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/actions.py,第54行,do_complete
* args,** kwargs)
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/strategies/base.py ,第62行完成
return self.backend.auth_complete(* args,** kwargs)
文件/home/vera/virtualenv/myapp/local/lib/python2.7/site- package / social / backends / facebook.py,第63行,auth_complete
self.process_error(self.data)
文件/home/vera/virtualenv/myapp/local/lib/python2.7 /site/social/backends/facebook.py,第56行,process_error
super(FacebookOAuth2,self).process_error(data)
文件/ home / vera / virtualenv / myapp / local /lib/python2.7/site-packages/social/backends/oauth.py,第312行,process_error
raise AuthCanceled(self,data.get('error_description',''))
AuthCanceled:认证过程ca nceled

有没有办法捕捉到Django?

解决方案

您可以创建一个中间件并捕获任何异常,
例外列表: https://github.com/omab/python-social-auth/blob/master/social/exceptions.py
在这种情况下你的AuthCanceled异常。



middleware.py

 $ code 

from social.apps.django_app.middleware import SocialAuthExceptionMiddleware
from django.shortcuts import HttpResponse
from social import exceptions as social_exceptions

class SocialAuthExceptionMiddleware(SocialAuthExceptionMiddleware):
def process_exception(self,request,exception):
if hasattr(social_exceptions,'AuthCanceled'):
return HttpResponse 小马%s%excep
else:
raise exception


settings.py

 


MIDDLEWARE_CLASSES =
.....
'pat_to_middleware.SocialAuthExceptionMiddleware',




I'm using python-social-auth in my Django application for authentication via Facebook. But when a user tries to login and when it's been refirected to Facebook app page clicks on "Cancel" button, appears the following exception:

ERROR 2014-01-03 15:32:15,308 base :: Internal Server Error: /complete/facebook/
Traceback (most recent call last):
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/apps/django_app/utils.py", line 45, in wrapper
    return func(request, backend, *args, **kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/apps/django_app/views.py", line 21, in complete
    redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/actions.py", line 54, in do_complete
    *args, **kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/strategies/base.py", line 62, in complete
    return self.backend.auth_complete(*args, **kwargs)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/backends/facebook.py", line 63, in auth_complete
    self.process_error(self.data)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/backends/facebook.py", line 56, in process_error
    super(FacebookOAuth2, self).process_error(data)
  File "/home/vera/virtualenv/myapp/local/lib/python2.7/site-packages/social/backends/oauth.py", line 312, in process_error
    raise AuthCanceled(self, data.get('error_description', ''))
AuthCanceled: Authentication process canceled

Is the any way to catch it Django?

解决方案

you can create a middleware and catch any exceptions, exception list: https://github.com/omab/python-social-auth/blob/master/social/exceptions.py in this case your AuthCanceled Exception.

middleware.py



    from social.apps.django_app.middleware import SocialAuthExceptionMiddleware
    from django.shortcuts import HttpResponse
    from social import exceptions as social_exceptions

    class SocialAuthExceptionMiddleware(SocialAuthExceptionMiddleware):
        def process_exception(self, request, exception):
            if hasattr(social_exceptions, 'AuthCanceled'):
                return HttpResponse("I'm the Pony %s" % exception)
            else:
                raise exception


settings.py



    MIDDLEWARE_CLASSES = (
             .....
            'pat_to_middleware.SocialAuthExceptionMiddleware',
    )


这篇关于python-social-auth AuthCanceled异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆