4

I'm using django-social-auth to do Facebook server-side authentication, and I am getting this error that I've been unable to track down: AuthFailed('There was an error authenticating the app').

I do NOT get this error when I test locally and I have the Facebook app site URL pointing to localhost.

However, I do get this error every time I point the Facebook app site URL to my dev instance -- e.g., https://dev.mydomain.com.

I have not been able to find a list of things that might cause the AuthFailed('There was an error authenticating the app') error.

Also, I have not been able to find others that have used django-social-auth successfully and solved this problem already.

I've found some useful info at the following: https://github.com/omab/django-social-auth/blob/master/doc/configuration.rst
http://django-social-auth.readthedocs.org/en/latest/
https://developers.facebook.com/docs/technical-guides/login/ https://developers.facebook.com/docs/howtos/login/server-side-login/

Lastly, I want to do server-side authentication because I want to retrieve users' name, email, and photo. However, if that can be done via client-side authentication, I guess I could try that.

Code below...

in settings.py:

LOGIN_URL = '/account/login/'
LOGIN_REDIRECT_URL = '/'
LOGIN_ERROR_URL = '/account/login/' # added when trying to debug Facebook error

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.facebook.FacebookBackend',
    'django.contrib.auth.backends.ModelBackend',
)

FACEBOOK_APP_ID = 'xxx'
FACEBOOK_API_SECRET = 'xxxxxx'
FACEBOOK_EXTENDED_PERMISSIONS = ['email']

SOCIAL_AUTH_CREATE_USERS = True
SOCIAL_AUTH_FORCE_RANDOM_USERNAME = False
SOCIAL_AUTH_DEFAULT_USERNAME = 'socialauth_user'
SOCIAL_AUTH_COMPLETE_URL_NAME = 'socialauth_complete'
SOCIAL_AUTH_ERROR_KEY = 'socialauth_error'
SOCIAL_AUTH_REDIRECT_IS_HTTPS = True    # force https in dev and production

# is SOCIAL_AUTH_LOGIN_REDIRECT_URL or SOCIAL_AUTH_BACKEND_ERROR_URL needed???

SOCIAL_AUTH_PIPELINE = (
    'social_auth.backends.pipeline.social.social_auth_user',
    'social_auth.backends.pipeline.associate.associate_by_email',
    'social_auth.backends.pipeline.misc.save_status_to_session',
    'apps.dsa_pipeline.redirect_to_form',
    'apps.dsa_pipeline.username',
    'apps.dsa_pipeline.phone',
    'social_auth.backends.pipeline.user.create_user',
    'social_auth.backends.pipeline.social.associate_user',
    'social_auth.backends.pipeline.social.load_extra_data',
    'social_auth.backends.pipeline.user.update_user_details',
    'apps.dsa_pipeline.profile',
) 

in dsa_pipeline.py:

from django.http import HttpResponseRedirect
from urllib2 import urlopen

def redirect_to_form(*args, **kwargs):
    if not kwargs['request'].session.get('saved_username') and kwargs.get('user') is None:
        return HttpResponseRedirect('/account/signup_dsa/')

def username(request, *args, **kwargs):
    if kwargs.get('user'):
        username = kwargs['user'].username
    else:
        username = request.session.get('saved_username')
    return {'username': username}

def phone(request, *args, **kwargs):
    if kwargs.get('phone'):
        phone = kwargs['phone'].phone
    else:
        phone = request.session.get('saved_phone')
    return {'phone': phone}

def profile(backend, details, response, social_user, uid, user, *args, **kwargs):
    profile = user.profile
    if not profile.phone:
        ph = kwargs.get('phone')
        if ph:
            profile.phone = ph
            profile.save()

in urls.py:

urlpatterns = patterns("",
    url(r"^$", direct_to_template, {"template": "homepage.html"}, name="home"),
    url(r"^admin/", include(admin.site.urls)),

    # profiles
    url(r'^', include("apps.profiles.urls")),
    url(r"^account/signup/$", SignupView.as_view(), name="account_signup"),
    url(r"^account/signup_dsa/$", SignupViewDSA.as_view(), name="account_signup_dsa"), 
    url(r"^account/", include("account.urls")),

    # Django Social Auth
    url(r'', include('social_auth.urls')),

Thanks for any help!

user1652737
  • 99
  • 1
  • 3
  • BTW, what conditions cause the AuthFailed error? For example, will that error occur if DNS lookup on my domain doesn't match the reverse lookup by IP? I am suspicious that this has something to do with DNS since configuration was not straightforward with SSL and cloud hosting. – user1652737 Oct 31 '12 at 19:06

1 Answers1

0

That AuthFailed error is raised here, I would check the values for client_id, redirect_uri and client_secret being used a few lines above and compare against your app configuration on Facebook.

omab
  • 3,721
  • 19
  • 23
  • Looking at the value of the variable 'url' in the traceback... 'client_id' = the value of 'FACEBOOK_APP_ID' in settings. 'client_secret' = the value of 'FACEBOOK_API_SECRET' in settings. 'redirect_uri' = https://dev.mydomain.com/complete/facebook/?redirect_state=somelongvalue. – user1652737 Oct 31 '12 at 18:31
  • What about the sandbox mode in your Facebook App configuration? – omab Nov 16 '12 at 06:39