def authenticate(self, graph=None): if not graph: raise AttributeError, 'Authentication Backend needs a valid graph.' # check if the access token is valid: try: me = graph.request('me') except facebook.GraphAPIError as e: logger.debug('Could not authenticate User: %s ' % e) return None try: facebook_user = FacebookUser.objects.get(id=int(me['id'])) except FacebookUser.DoesNotExist: facebook_user = FacebookUser(id=int(me['id'])) facebook_user.get_from_facebook(graph=graph, save=True) else: try: if isinstance(facebook_user.user, User) and facebook_user.user.is_authenticated(): return facebook_user.user except User.DoesNotExist: pass #we use the Facebook id as username because 'me.name' is not unique enough. user = get_or_create_user(me['id'], { 'email': me.get('email', u''), 'first_name': me.get('first_name', u''), 'last_name': me.get('last_name', u''), 'password': UNUSABLE_PASSWORD, 'date_joined': datetime.now() } ) facebook_user.user = user facebook_user.save() return user
def connect(request, redirect_field_name=REDIRECT_FIELD_NAME, application=None): fb_app = get_app_dict(application) cookie = facebook.get_user_from_cookie(request.COOKIES, fb_app['ID'], fb_app['SECRET']) redirect_to = request.REQUEST.get(redirect_field_name, reverse('account')) if request.user.is_authenticated() and cookie: try: graph = facebook.GraphAPI(cookie["access_token"]) profile = graph.get_object("me") except facebook.GraphAPIError as e: return render_to_response( 'registration/facebook/graph_error.html', {'error': e}, context_instance=RequestContext(request)) # if the user has already a facebook connection, abort and show # error message if hasattr(request.user, 'facebookuser'): connected_profile = graph.get_object("%s" % request.user.facebookuser.id) ctx = {'fb_name' : connected_profile['name'], 'fb_link' : connected_profile['link'], 'username' : request.user.username} return render_to_response( 'registration/facebook/already_connected.html', ctx, context_instance=RequestContext(request)) try: # if that facebook user already exists, abort and show error message fb_user = FacebookUser.objects.get(id=cookie['uid']) ctx = {'fb_name' : profile["name"], 'user' : fb_user.user} return render_to_response( 'registration/facebook/user_exists.html', ctx, context_instance=RequestContext(request)) except FacebookUser.DoesNotExist: fb_user = FacebookUser(id=cookie['uid'], user=request.user, profile_url=profile["link"], access_token=cookie["access_token"]) fb_user.save() return HttpResponseRedirect(redirect_to) elif request.user.is_authenticated(): ctx = {'username' : request.user.username} # if no cookie is present, the user did not authorize the application # in facebook. show the facebook connect button return render_to_response('registration/facebook/connect.html', ctx, context_instance=RequestContext(request)) else: # there is no facebook graph cookie and the user is not logged in # -> redirect to login page return HttpResponseRedirect(reverse('auth_login'))
def connect(request, redirect_field_name=REDIRECT_FIELD_NAME, app_name=None): """ Connects the Facebook Account to the current logged-in user. """ fb_app = get_app_dict(app_name) graph = get_graph(request, app_name=app_name) redirect_to = request.REQUEST.get(redirect_field_name, fb_app['REDIRECT-URL']) if request.user.is_authenticated(): try: me = graph.get_object("me") except facebook.GraphAPIError as e: return redirect('fb_login') # if the user has already a facebook connection, abort and show # error message if hasattr(request.user, 'user'): logger.debug('The logged in user is already connected.') # check if the django user and FB user match: if graph.user_id <> request.user.user.id: logger.debug( 'User %s already connected with Facebook account %s' % (request.user.get_full_name, request.user.user._name)) auth_views.logout(request, next_page=reverse('fb_app')) # Otherwise redirect return redirect(redirect_to) else: # The User has no Facebook account attached. Connect him. try: # if that facebook user already exists, abort and show error message fb_user = FacebookUser.objects.get(id=graph.user_id) except FacebookUser.DoesNotExist: fb_user = FacebookUser(id=graph.user_id) fb_user.get_from_facebook(graph=graph, save=True) else: if isinstance(fb_user.user, User): auth_views.logout(request, next_page=reverse('fb_login')) else: fb_user.user = request.user fb_user.save() finally: return redirect(redirect_to) else: # The user is not logged in # -> redirect to login page return redirect('fb_login')
def connect(request, redirect_field_name=REDIRECT_FIELD_NAME, app_name=None): """ Connects the Facebook Account to the current logged-in user. """ fb_app = get_app_dict(app_name) graph = get_graph(request, app_name=app_name) redirect_to = request.REQUEST.get(redirect_field_name, fb_app['REDIRECT-URL']) if request.user.is_authenticated(): try: me = graph.get_object("me") except facebook.GraphAPIError as e: return redirect('fb_login') # if the user has already a facebook connection, abort and show # error message if hasattr(request.user, 'user'): logger.debug('The logged in user is already connected.') # check if the django user and FB user match: if graph.user_id <> request.user.user.id: logger.debug('User %s already connected with Facebook account %s' % (request.user.get_full_name, request.user.user._name)) auth_views.logout(request, next_page=reverse('fb_app')) # Otherwise redirect return redirect(redirect_to) else: # The User has no Facebook account attached. Connect him. try: # if that facebook user already exists, abort and show error message fb_user = FacebookUser.objects.get(id=graph.user_id) except FacebookUser.DoesNotExist: fb_user = FacebookUser(id=graph.user_id) fb_user.get_from_facebook(graph=graph, save=True) else: if isinstance(fb_user.user, User): auth_views.logout(request, next_page=reverse('fb_login')) else: fb_user.user = request.user fb_user.save() finally: return redirect(redirect_to) else: # The user is not logged in # -> redirect to login page return redirect('fb_login')
def authenticate(self, graph=None): if not graph: raise AttributeError, 'Authentication Backend needs a valid graph.' # check if the access token is valid: try: me = graph.request('me') except facebook.GraphAPIError as e: logger.debug('Could not authenticate User: %s ' % e) return None try: facebook_user = FacebookUser.objects.get(id=int(me['id'])) except FacebookUser.DoesNotExist: facebook_user = FacebookUser(id=int(me['id'])) facebook_user.get_from_facebook(graph=graph, save=True) else: try: if isinstance(facebook_user.user, User) and facebook_user.user.is_authenticated(): return facebook_user.user except User.DoesNotExist: pass #we use the Facebook id as username because 'me.name' is not unique enough. user = get_or_create_user( me['id'], { 'email': me.get('email', u''), 'first_name': me.get('first_name', u''), 'last_name': me.get('last_name', u''), 'password': UNUSABLE_PASSWORD, 'date_joined': datetime.now() }) facebook_user.user = user facebook_user.save() return user
from facebook.models import User, Post, Comment, Reply, Expression, PostExpression, GenericExpression # delete all data User.objects.all().delete() Post.objects.all().delete() Comment.objects.all().delete() Reply.objects.all().delete() Expression.objects.all().delete() PostExpression.objects.all().delete() GenericExpression.objects.all().delete() # create users u1 = User(name="Joe Biden", email="*****@*****.**") u1.save() u2 = User(name="Jill Biden", email="*****@*****.**") u2.save() # create posts p1 = Post(poster=u1, text="We sent Major and Champ back home :(") p1.save() p2 = Post(poster=u1, text="Stimulus Care Package got passed!") p2.save() # create comments c1 = Comment(commenter=u2, text="Major bit one of our security staff", post=p1) c1.save() c2 = Comment(commenter=u2, text="Sad to see the dogs leave", post=p1) c2.save()