问题
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 !
来源:https://stackoverflow.com/questions/31958246/how-to-solve-authentication-process-canceled-error