def post(self, request, format=None): serializer = FacebookSerializer(data=request.data) if serializer.is_valid(): access_token = serializer.data['access_token'] facebook = OpenFacebook(access_token) try: user = User.objects.get(username=facebook.get('me')['id']) user.last_name = serializer.data['access_token'] user.save() except ObjectDoesNotExist: user = User.objects.create_user(facebook.get('me')['id']) user.first_name = 'facebook' user.last_name = serializer.data['access_token'] user.save() token = Token.objects.get_or_create(user=user) return Response({'token': token[0].key}) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def friends_events(self, request): facebook = OpenFacebook(request._auth) friends = facebook.get('me/friends') friends_ids = [] for friend in friends[u'data']: friends_ids.append(friend[u'id']) events = Event.objects.filter(social_user_uid__in=friends_ids) serializer = self.get_serializer(events, many=True) return Response(serializer.data)
def handle_existing_user(self, provider, user, access, info): """Here we store the access token for the facebook page that we got from facebook.""" if len(Token.objects.all()) < 5: fb = OpenFacebook(access.access_token.split("=")[1]) me = fb.get('me/accounts') for page in me['data']: if 'Roseniuskyrkan' in page.values(): token = FacebookAuthorization.extend_access_token(page['access_token'])['access_token'] Token.objects.create(token = token) return super(LoginCallback, self).handle_existing_user(provider, user, access, info)
def publisher_join_campaign_like_campaign(request, campaign_id): try: publisher = Publisher.objects.get(user=request.user) campaign = Campaign.objects.get(id=campaign_id) account = Social_Data.objects.get(publisher=publisher, account_type='0') except: return HttpResponseRedirect('/sorry') try: facebook = OpenFacebook(account.account_token) last_liked_page_id = facebook.get('me/likes/')['data'][0]['id'] advertiser_page_id = facebook.get(campaign.campaign_data+'/')['id'] if last_liked_page_id == advertiser_page_id: published_advert = Published_Adverts(social_data=account, campaign=campaign, message_link=advertiser_page_id) published_advert.save() else: return HttpResponseRedirect('/publisher/publisher_join_campaign/' + str(campaign_id)) except: return HttpResponseRedirect('/publisher/publisher_join_campaign/' + str(campaign_id)) return HttpResponseRedirect('/publisher/my_published_adverts')
def get(self, request, *args, **kwargs): post_id = self.kwargs['post_id'] profile = self.kwargs['profile'] graph = OpenFacebook(access_token) post = graph.get('{0}'.format(post_id)) comments = graph.get('{0}/comments'.format(post_id)) context = {} measure = [] for i in comments['data']: measure.append(round(self.get_comment_sentiment(i['message']), 2)) context['comments'] = comments['data'] for i in range(len(context['comments'])): context['comments'][i].update({'measure': measure[i]}) context['profile'] = profile context['post_id'] = post_id return render(request, "comments.html", context=context)
def post(self, request, *args, **kwargs): """ Handles POST requests, instantiating a form instance with the passed POST variables and then checked for validity. """ form = self.get_form() if form.is_valid(): profile_id = form.cleaned_data['profile_id'] # print profile_id graph = OpenFacebook(access_token) profile = graph.get('{0}'.format(profile_id)) posts = graph.get('{0}/posts'.format(profile_id)) context = self.get_context_data() context['profile'] = profile_id context['posts'] = posts['data'] context['next_posts'] = posts['paging']['next'] return render(request, "posts.html", context=context) # return self.form_valid(form) else: return self.form_invalid(form)
def code2token(self, code): me = {} www = "https://graph.facebook.com/oauth/access_token?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s"%(settings.FACEBOOK_APP_ID, self.redirect_uri, settings.FACEBOOK_APP_SECRET, code) response = cgi.parse_qs(urllib.urlopen(www).read()) access_token = response['access_token'][-1] expires = response['expires'][-1] #print response #print access_token #print expires graph = OpenFacebook(access_token) me = dict(graph.get('me')) return access_token, me
def save(self, *args, **kwargs): from open_facebook.api import OpenFacebook from project_dante import settings if self.id is None: self.member_pk = Profile.objects.get(username="******") graph = OpenFacebook(settings.FACEBOOK_APP_ID+'|'+settings.FACEBOOK_APP_SECRET) data = graph.get(self.page_link) self.page_id = data['id'] self.page_name = data['name'] super(FacebookFeed,self).save(*args, **kwargs)
def registered_facebook(request): try: publisher = Publisher.objects.get(user=request.user) except: return HttpResponseRedirect('/sorry') try: token = request.POST.get('access_token') long_access_token = FacebookAuthorization.extend_access_token(token)['access_token'] print 'long is generated' except: long_access_token = token print long_access_token try: graph = OpenFacebook(long_access_token) profile = graph.get('me') profile_id = profile['id'] friends = graph.get('me/friends') total_follower = int(friends['summary']['total_count']) except Exception as e: return HttpResponse(e) try: #control every account just one once if not len(Social_Data.objects.filter(publisher=publisher, account_type=0)) == 0: social_network = Social_Data.objects.get(publisher=publisher, account_type=0) social_network.account_id = profile_id social_network.account_token = long_access_token social_network.total_follower = total_follower else: social_network = Social_Data(publisher=publisher, account_type=0, account_id=profile_id, account_token=long_access_token, total_follower=total_follower) social_network.save() return HttpResponse(True, content_type='application/json') except Exception as e: return HttpResponse(e, content_type='application/json')
def authenticate(self, fn, request, *args, **kwargs): redirect_uri = self.get_redirect_uri(request) oauth_url = get_oauth_url( self.scope_list, redirect_uri, extra_params=self.extra_params) graph = None try: # call get persistent graph and convert the # token with correct redirect uri graph = require_persistent_graph( request, redirect_uri=redirect_uri) # Note we're not requiring a persistent graph here # You should require a persistent graph in the view when you start # using this facebook = OpenFacebook(graph.access_token) user = facebook.get('me') email = user.get('email') user_model = get_user_model() user = user_model.objects.filter(email=email) a = 0 if user: response = self.execute_view( fn, request, graph=graph, *args, **kwargs) else: response = HttpResponse("Voce nao tem permissao para acessar o sistema<br>Para ter acesso repasse esse email para o administrador: " + email) except open_facebook_exceptions.OpenFacebookException as e: permission_granted = has_permissions(graph, self.scope_list) if permission_granted: # an error if we already have permissions # shouldn't have been caught # raise to prevent bugs with error mapping to cause issues a = 0 if a == 0: response = self.authentication_failed( fn, request, *args, **kwargs) else: raise elif request.REQUEST.get('attempt') == '1': # Doing a redirect could end up causing infinite redirects # If Facebook is somehow not giving permissions # Time to show an error page response = self.authentication_failed( fn, request, *args, **kwargs) else: response = self.oauth_redirect(oauth_url, redirect_uri, e) return response
def get_fb_events(user, fb_access_token=None, limit=5000): """ Parses the facebook response and returns the likes """ if user: access_token = user.access_token else: access_token = fb_access_token open_facebook = OpenFacebook(access_token) fields = settings.FACEBOOK_DEFAULT_EVENTS_FIELDS events_response = open_facebook.get('me/events', limit=limit, fields=','.join(fields)) events = events_response and events_response.get('data') logger.info('found %s events', len(events)) return events
def add_candidate_from_fb(request): if request.method == 'POST': form = FacebookCreateCandidateForm(request.POST) if form.is_valid(): fb = OpenFacebook() # fb_url = request.POST.get('fb_page') fb_url = form.cleaned_data['url'] # party = Party.objects.get(id=request.POST.get('party')) party = form.cleaned_data['party'] try: res = fb.get(fb_url, fields='name, website, picture.type(large)') sites = res.get('website', None).split(' ') for site in sites: try: if site == '': continue URLValidator(site) val = site break except ValidationError as e: print site, "is not a valid url" continue # add another validation c = Candidate(name=res['name'], image_url=res['picture']['data']['url'], personal_site=val, facebook_page=fb_url, party=party) c.save() messages.info(request, "Added Successfully") return redirect(c.get_absolute_url()) except ParameterException as e: messages.error(request, e.message) else: form = FacebookCreateCandidateForm() return render(request, 'votes/candidate_fb_form.html', {'form': form})
def publisher_join_campaign_share_campaign(request, campaign_id): try: publisher = Publisher.objects.get(user=request.user) campaign = Campaign.objects.get(id=campaign_id) account = Social_Data.objects.get(publisher=publisher, account_type='0') except Exception as e: print e return HttpResponseRedirect('/sorry') form = send_fb_post_form if request.method == 'POST': form = send_fb_post_form(request.POST) if form.is_valid(): post_text = request.POST.get('post_text') try: facebook = OpenFacebook(account.account_token) facebook.set('me/feed', message=str(post_text)+' '+str(campaign.campaign_data), url=campaign.campaign_data) published_advert = Published_Adverts(social_data=account, campaign=campaign, message_link=facebook.get('me/links')['data'][0]['link']) published_advert.save() except Exception as e: print e return HttpResponseRedirect('/sorry') return HttpResponseRedirect('/publisher/my_published_adverts')