How to solve Authentication process canceled error

2019-02-13 18:11发布

问题:

Now I try to setup python-social-app

In facebook login after the username/password redirect to error page I don't know why this happen...

In my setting I have 'social.backends.facebook.FacebookOAuth2' and I correctly set SOCIAL_AUTH_FACEBOOK_KEY and Secret so Really where to look the error.?

Traceback

Environment:
Request Method: GET
Request URL: http://website.com:8000/complete/facebook/?redirect_state=IuQDEiyX2bbS8Uhk7MR3hpRFLNZlW2Y5&code=AQDH5kqBibfy9bi21M9tTieujRAqvJVYdAb2UPFvfH6DVXoCWrrtamRA99Ze5-6cC6qHPiNq-a3XbGh2Gg4pbdFfM4OTpCEpWkPID6SZrHfAoEan8Q68cV17LDgsryX_M45QoXd0knpbE0x-QwAPwdoFmKQGHLw7xomCHeN5pCtrWhtoYQIrsFE1UQZZaxt4qtLzAmfmCRjDO7Et_S75fngLiomM0PfevTChLbHJHMYaqy6DBkgGZqZK-bXrqLaNFnBEoZ3M956DwCg4ZtTnvxulR4sXH9ZV3IoxVhL0JxMVsGnT2H_0wdKujIDPKcdPKZc&state=IuQDEiyX2bbS8Uhk7MR3hpRFLNZlW2Y5

Django Version: 1.8.3
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'frontend',
 'social.apps.django_app.default')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/apps/django_app/utils.py" in wrapper
  51.             return func(request, backend, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/apps/django_app/views.py" in complete
  28.                        redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/actions.py" in do_complete
  43.         user = backend.complete(user=user, *args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/backends/base.py" in complete
  41.         return self.auth_complete(*args, **kwargs)
File "/Users/simon/Freelancer/env/lib/python2.7/site-packages/social/utils.py" in wrapper
  232.                 raise AuthCanceled(args[0])

Exception Type: AuthCanceled at /complete/facebook/
Exception Value: Authentication process canceled

回答1:

I had exactly the same issue with both Facebook and Google. Have been trying this since yesterday. It is finally working... Have listed my working settings below maybe it will help...

One observation it seems to me that in my case the href values in my login Template had something to do with the issue ??

Hope this helps

SETTINGS.PY
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY='****************.apps.googleusercontent.com'
    SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET ='**************'

    SOCIAL_AUTH_RAISE_EXCEPTIONS = False
    SOCIAL_AUTH_FACEBOOK_KEY = '************' # Facebook App ID
    SOCIAL_AUTH_FACEBOOK_SECRET = '*********************' # Facebook App Secret

INSTALLED_APPS

'social.apps.django_app.default'

TEMPLATES

'context_processors':
social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',

URLS.PY

from django.conf import settings

urlpatterns = [
    url('', include('django.contrib.auth.urls', namespace='auth')),
    url('', include('social.apps.django_app.urls', namespace='social')),

FINALLY THE LOGIN.HTML TEMPLATE, there seemed to be a porblem with origianl href''s

ORIGINAL href was:

<li class="facebook"><a href="{% url 'social:begin' 'facebook' %}">Login with Facebook</a></li>

THIS WAS CHANGED TO

 <li class="facebook"><a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a></li>

also same change made to href for google.....

IN THE FACBOOK DEVELOPERS CONSOLE

BASIC SETTINGS

APP DOMAINS = mysite.com (also changed the /etc/hosts file to map mysite.com and not localhost to 127.0.0.1)

site url ="example.com:8000/"

ADVANCED SETTINGS ONLY "Allow API Access to App Settings" and "Collect the Apple Advertising Identifier (IDFA) with App Events" are set to YES

all other fields set to no or blank with the exception of the client token field

THE GOOGLE API SETTINGS ARE AS FOLLOWS

"Authorized JavaScript origins" this is left blank

"Authorized redirect URIs" is set to http://example.com:8000/complete/google-oauth2/ (ORIGINALLY I WAS USING http://example.com:8000/social-auth/complete/google-oauth2/)

ON THE "Oauth Consent screen"

"Email address" is set

"Product name shown to users" is set

ALL other fields left at default setting



回答2:

I had the same problem for a long time. After spending a lot of time, I figured out the problem. For some reason, the document of social-app-django had specified the current version of Facebook API as 2.9(security reasons?). The current version is 2.8. So, just change it to 2.8 or remove it.

SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.8'

This was the reason, my authentication was getting cancelled. Hope this helps !