0

i have used my code based on this question i want to log user and if user is not registered then i want to signup with default account and social account like default link for login for all auth does. this works fine when user is already signed up.

code from view.py

class mobile_facebook_login_without_signup(APIView):

    @csrf_exempt
    def post(self, request, format='application/json'):
        if request.method == "POST": # The method better be a POST
            access_token = request.DATA.get('access_token') # Get token
            email = request.DATA.get('email') # Get email
            print "email = " +str(email) + " - access_token = " +str(access_token)
            try:
                app = SocialApp.objects.get(provider="facebook")
                token = SocialToken(app=app, token=access_token)

                # Check token against facebook
                login = fb_complete_login(request, app, token)
                login.token = token
                login.state = SocialLogin.state_from_request(request)
                print "login = " +str(login)
                # Add or update the user into users table
                ret = complete_social_login(request, login)
                print "ret = " +str(ret)

                data = {}
                # Try to get username from email
                try:
                    user = User.objects.get(email=email) # Get User
                    # Login the user from Django's perspective
                    #user.backend = 'django_tours.auth_backend.PasswordlessAuthBackend'
                    user.backend = 'allauth.account.auth_backends.AuthenticationBackend'
                    user = authenticate(email=user.email)
                    auth_login(request,user)
                except User.DoesNotExist,e:
                    return Response('failure: %s'%(e), status=status.HTTP_401_UNAUTHORIZED)
                return Response( 'sign-in successful ', status=status.HTTP_202_ACCEPTED)
            except Exception,e:
                return Response('Failure: %s'%(e), status=status.HTTP_401_UNAUTHORIZED)
        else:
            return Response('failure', status=status.HTTP_401_UNAUTHORIZED)

Thanks in advance.

Community
  • 1
  • 1
eureka
  • 67
  • 9

1 Answers1

0

i have figured it out, all i have to do was to add following return statement and it worked

    return Response(data={
        'success': True,
        'username': request.user.username,
        'email': email,
        'user_id': request.user.pk,
        }, status=status.HTTP_202_ACCEPTED)
eureka
  • 67
  • 9