def facebook_connect(request, template='socialregistration/facebook.html', extra_context=dict()): """ View to handle connecting existing accounts with facebook """ fb = Facebook(settings.FACEBOOK_API_KEY, settings.FACEBOOK_SECRET_KEY) if not fb.check_session(request) \ or not request.user.is_authenticated(): extra_context.update( dict(error=FB_ERROR) ) return render_to_response( template, extra_context, context_instance=RequestContext(request) ) try: profile = FacebookProfile.all().filter('uid=',fb.uid).fetch(1)[0] except IndexError: fb_profile = fb.users.getInfo(fb.uid, ['name','email','pic_square','username', ])[0] profile = FacebookProfile(user=request.user, uid=fb.uid, username = fb_profile['username'], real_name = fb_profile['name'], email = fb_profile['email'], pic_url = fb_profile['pic_square'], ) profile.save() return HttpResponseRedirect(_get_next(request))
def facebook_login(request, template='socialregistration/facebook.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html'): """ View to handle the Facebook login """ if request.facebook.uid is None: extra_context.update(dict(error=FB_ERROR)) return render_to_response(template, extra_context, context_instance=RequestContext(request)) user = authenticate(uid=request.facebook.uid) if user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = FacebookProfile(uid=request.facebook.uid) request.session['next'] = _get_next(request) return HttpResponseRedirect(reverse('socialregistration_setup')) if not user.is_active: return render_to_response(account_inactive_template, extra_context, context_instance=RequestContext(request)) login(request, user) return HttpResponseRedirect(_get_next(request))
def facebook_login(request, template='socialregistration/facebook.html', extra_context=dict()): """ View to handle the Facebook login """ if not request.facebook.check_session(request): extra_context.update(dict(error=FB_ERROR)) return render_to_response(template, extra_context, context_instance=RequestContext(request)) user = authenticate(uid=request.facebook.uid) if user is None: request.session['socialregistration_user'] = User() fb_profile = request.facebook.users.getInfo([request.facebook.uid], ['name', 'pic_square'])[0] request.session['socialregistration_profile'] = FacebookProfile( uid=request.facebook.uid, ) request.session['next'] = _get_next(request) return HttpResponseRedirect(reverse('socialregistration_setup')) login(request, user) return HttpResponseRedirect(_get_next(request))
def authenticate(self, uid=None): try: # GAE implementation: query = FacebookProfile.all() query.filter('uid =', uid).filter('site = ', Site.objects.get_current()) profile = query.get() return profile.user #return FacebookProfile.objects.get( # uid=uid, # site=Site.objects.get_current() #).user except: return None
def authenticate(self, uid=None): try: facebook_profile = FacebookProfile.all() facebook_profile.filter('uid = ', uid) #facebook_profile.filter('site = ',Site.objects.get_current()) facebook_profile = facebook_profile.fetch(1) auth_user = facebook_profile[0].user return auth_user #return FacebookProfile.objects.get( # uid=uid, # site=Site.objects.get_current() #).user except: return None
def authenticate(self, uid=None): try: facebook_profile = FacebookProfile.all() facebook_profile.filter('uid = ',uid) #facebook_profile.filter('site = ',Site.objects.get_current()) facebook_profile = facebook_profile.fetch(1) auth_user = facebook_profile[0].user return auth_user #return FacebookProfile.objects.get( # uid=uid, # site=Site.objects.get_current() #).user except: return None
def facebook_login( request, template='socialregistration/facebook.html', extra_context=None, account_inactive_template='socialregistration/account_inactive.html'): """ View to handle the Facebook login """ extra_context = extra_context or {} if request.facebook.uid is None: extra_context.update(dict(error=FB_ERROR)) return render_to_response(template, extra_context, context_instance=RequestContext(request)) user = authenticate(uid=request.facebook.uid) fb_data = request.facebook.graph.get_object('me') fb_uid = request.facebook.uid if user is None: try: user = User.objects.get(email=fb_data['email']) FacebookProfile.objects.create(uid=fb_uid, user=user) user = authenticate(uid=fb_uid) except User.DoesNotExist: user = User() profile = FacebookProfile(uid=request.facebook.uid) user = setup_user(fb_data, user, profile) request.session['socialregistration_user'] = user request.session['socialregistration_profile'] = profile request.session['next'] = _get_next(request) return HttpResponseRedirect(reverse('socialregistration_setup')) if not user.is_active: return render_to_response(account_inactive_template, extra_context, context_instance=RequestContext(request)) login(request, user) return HttpResponseRedirect(_get_next(request))
def _get_facebook_app(request): if "access_token" in request.session: graph = facebook.GraphAPI(request.session["access_token"]) user = graph.get_object("me") sys_user = authenticate(uid=user["id"]) if sys_user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = FacebookProfile( uid=user["id"]) request.session['socialregistration_client'] = request.facebook request.session[ 'next'] = "http://apps.facebook.com/" + settings.FACEBOOK_APP_ID + "/" return graph, user, None login(request, sys_user) return graph, user, sys_user return None, None, None
def authenticate(self, uid=None): return FacebookProfile.all().filter('uid =', uid).get()
def facebook_login(request, template='socialregistration/facebook.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html'): """ View to handle the Facebook login """ fb = Facebook(settings.FACEBOOK_API_KEY, settings.FACEBOOK_SECRET_KEY) if not fb.check_session(request): facebook_url = "http://www.facebook.com/login.php?" extra_context.update( dict(error=FB_ERROR) ) args = { "api_key": settings.FACEBOOK_API_KEY, "v": "1.0", "fbconnect": "true", "display": "page", "next":request.build_absolute_uri( _get_next(request)), "return_session": "true", } #if extended_permissions: # if isinstance(extended_permissions, basestring): # extended_permissions = [extended_permissions] # args["req_perms"] = ",".join(extended_permissions) #self.redirect("http://www.facebook.com/login.php?" + # urllib.urlencode(args)) facebook_url = facebook_url + urllib.urlencode(args) return HttpResponseRedirect(facebook_url) return render_to_response( template, extra_context, context_instance=RequestContext(request) ) user = authenticate(uid=str(fb.uid)) if user is None: user = authenticate(uid=fb.uid) fb_profile = fb.users.getInfo(fb.uid, ['name','email','pic_square','username', ])[0] request.session['social_suggested_username'] = fb_profile['username'] request.session['socialregistration_profile'] = FacebookProfile( uid=fb.uid, username = fb_profile['username'], real_name = fb_profile['name'], email = fb_profile['email'], pic_url = fb_profile['pic_square'], ) request.session['socialregistration_user'] = User(username=''.join(fb_profile['name'].split(' ')[:2])) request.session['next'] = _get_next(request) return HttpResponseRedirect(reverse('socialregistration_setup')) if not user.is_active: return render_to_response( account_inactive_template, extra_context, context_instance=RequestContext(request) ) login(request, user) return HttpResponseRedirect(_get_next(request))
def facebook_connect(request, template='socialregistration/facebook.html', extra_context=dict()): """ View to handle graph connecting Authorize and create user if none """ try: access_token = request.facebook.access_token except: # if cookie does not exist # assume logging in normal way params = {} params["client_id"] = settings.FACEBOOK_APP_ID params["client_secret"] = settings.FACEBOOK_SECRET_KEY params["redirect_uri"] = request.build_absolute_uri( reverse("facebook_connect")) params["code"] = request.GET.get('code', '') url = "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode( params) from cgi import parse_qs userdata = urllib.urlopen(url).read() res_parse_qs = parse_qs(userdata) # Could be a bot query if not res_parse_qs.has_key('access_token'): return render_to_response(template, extra_context, context_instance=RequestContext(request)) access_token = res_parse_qs['access_token'][-1] else: uid = request.facebook.uid graph = facebook.GraphAPI(access_token) user_info = graph.get_object('me') if request.user.is_authenticated(): # Handling already logged in users connecting their accounts try: profile = FacebookProfile.objects.get(uid=user_info['id']) except FacebookProfile.DoesNotExist: # There can only be one profile! profile = FacebookProfile.objects.create( user=request.user, uid=user_info['id'], username=user_info['name'], access_token=access_token) _connect(request.user, profile, request.facebook) else: profile.access_token = access_token profile.save() return HttpResponseRedirect(_get_next(request)) user = authenticate(uid=user_info['id']) if user is None: profile = FacebookProfile(uid=user_info['id'], username=user_info['name'], access_token=access_token) user = User() request.session['socialregistration_profile'] = profile request.session['socialregistration_user'] = user # Client is not pickleable with the request on it request.session['socialregistration_client'] = request.facebook request.session['next'] = _get_next(request) return HttpResponseRedirect(reverse('socialregistration_setup')) _login(request, user, FacebookProfile.objects.get(user=user), request.facebook) return HttpResponseRedirect(_get_next(request))
def create_default_facebook_profile(request): ''' Called by both facebook_login (if connecting through the website) and synchronise_facebook_profile (if using facebook.require_add in events_fb) This is the place to send emails! ''' # # Create User # new_user = User( username = str(uuid.uuid4())[:30] ) # basic user created, now get some information about him fb_profile = request.facebook.users.getInfo([request.facebook.uid], ['first_name', 'last_name', 'pic_square', 'profile_url', 'current_location', 'email'])[0] new_user.first_name = fb_profile['first_name'] new_user.last_name = fb_profile['last_name'] new_user.email = fb_profile['email'] new_user.put() # # Create Profile # try: zip = int(fb_profile['current_location']['zip']) except: zip = 0 try: current_location_city = fb_profile['current_location']['city'] current_location_state = fb_profile['current_location']['state'] current_location_country = fb_profile['current_location']['country'] except: current_location_city = None current_location_state = None current_location_country = None new_profile = FacebookProfile( user = new_user, uid = str(request.facebook.uid), pic_square = fb_profile['pic_square'], profile_url = fb_profile['profile_url'], current_location_city = current_location_city, current_location_state = current_location_state, current_location_country = current_location_country, current_location_zip = zip, site = Site.objects.get_current(), ) new_profile.put() logging.debug("Created user: %s"%new_profile.user) if getattr(settings, 'SOCIAL_SEND_EMAIL_ON_NEW_PROFILE', False): if not new_user.email: logging.debug("Not sending email - user hasn't specified email") else: logging.debug("Sending email to: %s" % new_user.email) try: from django.core.mail import send_mail subject = render_to_string('socialregistration/new_profile_email_subject.txt', { 'site': new_profile.site }) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) message = render_to_string('socialregistration/new_profile_email.txt', { 'user': new_user, 'profile': new_profile }) send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [new_user.email]) except NotImplementedError: logging.error("Failed to send email to %s; subject: %s" %(new_user.email, subject)) return new_profile
from django.conf import settings from django.contrib.comments.managers import CommentManager from django.core.cache import cache from music.models import Track, Artist from tagging.fields import TagField from notification import models as notification from actstream.models import Follow from actstream import action from socialregistration.models import TwitterProfile, FacebookProfile TwitterProfile.add_to_class('access_token', models.TextField(help_text='only useful if your app wants to tweet while the browser is not authenticated via twitter', null=True, blank=True)) TwitterProfile.add_to_class('token_secret', models.TextField(help_text='only useful if your app wants to tweet while the browser is not authenticated via twitter', null=True, blank=True)) TwitterProfile.add_to_class('avatar_url', models.TextField(null=True, blank=True)) FacebookProfile.add_to_class('avatar_url', models.TextField(null=True, blank=True)) TwitterProfile.add_to_class('nick', models.TextField(null=True, blank=True)) FacebookProfile.add_to_class('nick', models.TextField(null=True, blank=True)) TwitterProfile.add_to_class('url', models.TextField(null=True, blank=True)) FacebookProfile.add_to_class('url', models.TextField(null=True, blank=True)) def new_user_unicode(self): return '%s %s' % (self.first_name, self.last_name) User.__unicode__ = new_user_unicode def new_user_get_absolute_url(self): return urlresolvers.reverse('user_details', args=(self.username,)) User.get_absolute_url = new_user_get_absolute_url def twitter_url(sender, instance, **kwargs): if instance.nick: