示例#1
0
	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)
示例#2
0
文件: view.py 项目: lDuffy/dukebox
    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)
示例#3
0
 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)
示例#4
0
文件: views.py 项目: cemkiy/share_ads
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')
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
	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
示例#8
0
文件: models.py 项目: dynoto/kiasu-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)
示例#9
0
文件: views.py 项目: cemkiy/share_ads
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')
示例#10
0
	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
示例#11
0
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
示例#12
0
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})
示例#13
0
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})
示例#14
0
文件: views.py 项目: cemkiy/share_ads
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')