def facebook_connect(request): """ Create or connect a user via facebook connect. """ try: access_token = request.POST["access_token"] user_id = request.POST["id"] request_sig = request.POST["sig"] sig, expected_sig = get_sig_and_expected_sig(request_sig, settings.FACEBOOK_APP_SECRET) if sig == expected_sig: try: f_user = FacebookUser.objects.get(facebook_id=user_id) except FacebookUser.DoesNotExist: # Facebook api to get the user profile profile = facebook.GraphAPI(access_token).get_object('me') first_name = profile["first_name"] last_name = profile["last_name"] # Create the user user = User() user.save() user.username = u"fbuser_%s" % user.id user.first_name = first_name user.last_name = last_name # Attempt to set the email try: if "email" in settings.FACEBOOK_SCOPE: email = profile["email"] user.email = email except AttributeError: pass # Create the facebook user f_user = FacebookUser(facebook_id=user_id, contrib_user=user) # Set a password temp = hashlib.new('sha1') temp.update(str(datetime.datetime.now())) password = temp.hexdigest() user.set_password(password) f_user.contrib_password = password # Save f_user.save() user.save() # Authenticate and login authenticated_user = auth.authenticate(username=f_user.contrib_user.username, password=f_user.contrib_password) auth.login(request, authenticated_user) else: content = { "is_error" : True, "error_text" : "Error connecting facebook connect user %s " % (user_id) } return json_response(content, 200) except Exception, e: content = { "is_error" : True, "error_text" : "Error in ajax call, exception: %s" % e } return json_response(content, 200)
def facebook_connect(request): """ Create or connect a user via facebook connect. """ try: access_token = request.POST["access_token"] user_id = request.POST["id"] request_sig = request.POST["sig"] sig, expected_sig = get_sig_and_expected_sig(request_sig, settings.FACEBOOK_APP_SECRET) if sig == expected_sig: try: f_user = FacebookUser.objects.get(facebook_id=user_id) except FacebookUser.DoesNotExist: # Facebook api to get the user profile profile = facebook.GraphAPI(access_token).get_object('me') first_name = profile["first_name"] last_name = profile["last_name"] # Create the user user = User() user.save() user.username = u"fbuser_%s" % user.id user.first_name = first_name user.last_name = last_name # Attempt to set the email try: if "email" in settings.FACEBOOK_SCOPE: email = profile["email"] user.email = email except AttributeError: pass # Create the facebook user f_user = FacebookUser(facebook_id=user_id, contrib_user=user) # Set a password temp = hashlib.new('sha1') temp.update(str(datetime.datetime.now())) password = temp.hexdigest() user.set_password(password) f_user.contrib_password = password # Save f_user.save() user.save() # Authenticate and login #service = OAuth2Service.objects.get(name='facebook') try: oauth2 = OAuth2Access.objects.get(user_id=f_user.contrib_user_id, token_type=TOKEN_ACCESS, service='facebook') except ObjectDoesNotExist, e: oauth2 = OAuth2Access() oauth2.token = request.POST['access_token'] oauth2.token_type = TOKEN_ACCESS oauth2.user_id = f_user.contrib_user_id oauth2.service = 'facebook' oauth2.save() task = taskqueue.Task(url='/oauth2/facebook/task/connections/' + str(f_user.contrib_user_id)) task.add() authenticated_user = auth.authenticate(username=f_user.contrib_user.username, password=f_user.contrib_password) auth.login(request, authenticated_user) else: