2015-01-13 35 views
0

我已经使用基于this question我想登录的用户我的代码,如果用户没有再注册,我想用默认帐户和社交帐户像默认链接注册以登录所有auth确实。这在用户已经注册时工作正常。Django的allauth着注册,如果新的同时记录用户

预先从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) 

由于代码。

回答

0

我已经想通了,所有我需要做的是添加以下return语句,它的工作

return Response(data={ 
     'success': True, 
     'username': request.user.username, 
     'email': email, 
     'user_id': request.user.pk, 
     }, status=status.HTTP_202_ACCEPTED) 
相关问题