Search code examples
djangodjango-rest-frameworkpython-social-auth

Facebook authentication using angular JS and Django


I'm a beginner in both angular JS and django. I was following this particular tutorial in making a facebook authentication app.

http://cbdev.blogspot.in/2014/02/facebook-login-with-angularjs-django.html

I've followed the tutorial exactly. And when I start the server I get the error.

NameError at /

name 'strategy' is not defined

Request Method:     GET
Request URL:    http://127.0.0.1:8000/
Django Version:     1.3.1
Exception Type:     NameError
Exception Value:    

name 'strategy' is not defined

Exception Location:     /root/Documents/django/clueless/clueless_engine/../clueless_engine/views.py in <module>, line 1
Python Executable:  /root/Documents/django/clueless/bin/python
Python Version:     2.7.13
Python Path:    

['/root/Documents/django/clueless/clueless_engine',
 '/root/Documents/django/clueless/lib/python2.7',
 '/root/Documents/django/clueless/lib/python2.7/plat-x86_64-linux-gnu',
 '/root/Documents/django/clueless/lib/python2.7/lib-tk',
 '/root/Documents/django/clueless/lib/python2.7/lib-old',
 '/root/Documents/django/clueless/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/root/Documents/django/clueless/local/lib/python2.7/site-packages',
 '/root/Documents/django/clueless/lib/python2.7/site-packages']

Server time:    Thu, 1 Jun 2017 07:30:14 +0530

my views.py file is

@strategy()
def auth_by_token(request, backend):
    backend = request.strategy.backend
    user=request.user
    user = backend.do_auth(
        access_token=request.DATA.get('access_token'),
        user=user.is_authenticated() and user or None
        )
    if user and user.is_active:
        return user# Return anything that makes sense here
    else:
        return None



@csrf_exempt
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def social_register(request):
    auth_token = request.DATA.get('access_token', None)
    backend = request.DATA.get('backend', None)
    if auth_token and backend:
        try:
            user = auth_by_token(request, backend)
        except Exception, err:
            return Response(str(err), status=400)
        if user:
            strategy = load_strategy(request=request, backend=backend)
            _do_login(strategy, user)
            return Response( "User logged in", status=status.HTTP_200_OK )
        else:
            return Response("Bad Credentials", status=403)
    else:
        return Response("Bad request", status=400)

Solution

  • The problem was that I forgot to import modules.

    from social.apps.django_app.utils import load_strategy strategy = load_strategy(request)