Question

I am using django-social-auth for facebook login which creates a new user if it doesn't exist in the db, else updates the existing db entry. I think it checks for fb_username OR fb_uid in the database to check if the user exists or not.

Requirements: In my application, i need to be able to create a user by manually inserting his info in db. And this row should be updated when the user logs_in with facebook.

So I manually created an entry with all the information of the user i.e. fb_username, fb_uid, email, first_name, last_name, hometown... etc. But what happens when the user logs_in is, a new entry is created instead of updating the manually created entry. So i really don't understand what fields does it use to check if the user exists or not. What would be the best way to go from here?

Extra Info: I am extending the user model of django to UserProfile using a one-to-one relationship and AUTH_PROFILE_MODULE = 'accounts.UserProfile'

Was it helpful?

Solution

The only way to do it was editing this default pipeline

'social_auth.backends.pipeline.user.create_user',

by changing the

def create_user(backend,details,response,username,user=None,*args,**kwargs): if user: return {'user': user} if not username: return None

to

def create_user(backend,details,response,username,user=None,*args,**kwargs): username = User.objects.get(u_name=username) if username: return {'user': username} if not username: return None

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top