def setpassword(request, idnum): idnum = int(idnum) try: fb = FacebookProfiles.objects.get(fbk_id = idnum) facebook = Pyfb(settings.FACEBOOK_APP_ID) facebook.set_access_token(fb.fbk_token) me = facebook.get_user_by_id(id = fb.fbk_id) user = fb.user except ObjectDoesNotExist: return HttpResponseRedirect('/') if request.method == 'POST': form = PasswordSetForm(request.POST) if form.is_valid(): user.set_password(form.cleaned_data['password']) user.save() authuser = authenticate(username=user.username, password=form.cleaned_data['password']) if authuser is not None: login(request, authuser) return HttpResponseRedirect('/auth/welcome/') else: form = PasswordSetForm() var = RequestContext(request, { 'form':form, 'me':me, 'user':user }) return render_to_response('registration/facebook.html', var)
def facebook_login_success(request): code = request.GET.get('code') facebook = Pyfb(FACEBOOK_APP_ID) access_token = facebook.get_access_token(FACEBOOK_SECRET_KEY, code, redirect_uri=FACEBOOK_REDIRECT_URL) facebook.set_access_token(access_token) request.session['access_token'] = access_token return render_user(facebook, request)
class PyfbTests(unittest.TestCase): pyfb_args = {} def setUp(self): self.pyfb = Pyfb(config["FACEBOOK_APP_ID"], **self.pyfb_args) self.pyfb.set_access_token(config["FACEBOOK_TOKEN"]) self.me = self.pyfb.get_myself() def test_auth(self): self.assertEquals(type(self.me.name), type(unicode())) def test_get_friends(self): self.assertTrue(isinstance(self.pyfb.get_friends(self.me.id), list)) def test_get_photos_paging(self): photos = self.pyfb.get_photos() more_photos = photos.next() more_more_photos = more_photos.next() if len(photos) < 25 and len(more_photos) > 0: raise Exception() if len(photos) == 25 and len(more_photos) < 25 and len(more_more_photos) > 0: raise Exception() self.assertTrue(isinstance(photos, list)) self.assertTrue(isinstance(more_photos, list)) self.assertTrue(isinstance(more_more_photos, list)) self.assertEquals(len(photos), len(more_photos.previous())) self.assertEquals(photos.previous(), [])
def facebook_javascript_login_sucess(request): access_token = request.GET.get("access_token") facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(access_token) return _render_user(facebook)
class PyfbTests(unittest.TestCase): pyfb_args = {} def setUp(self): self.pyfb = Pyfb(keys["FACEBOOK_APP_ID"], **self.pyfb_args) self.pyfb.set_access_token(keys["FACEBOOK_TOKEN"]) self.me = self.pyfb.get_myself() def test_auth(self): self.assertEquals(type(self.me.name), type(unicode())) def test_get_friends(self): self.assertTrue(isinstance(self.pyfb.get_friends(self.me.id), list)) def test_get_photos_paging(self): photos = self.pyfb.get_photos() more_photos = photos.next() more_more_photos = more_photos.next() if len(photos) < 25 and len(more_photos) > 0: raise Exception() if len(photos ) == 25 and len(more_photos) < 25 and len(more_more_photos) > 0: raise Exception() self.assertTrue(isinstance(photos, list)) self.assertTrue(isinstance(more_photos, list)) self.assertTrue(isinstance(more_more_photos, list)) self.assertEquals(len(photos), len(more_photos.previous())) self.assertEquals(photos.previous(), [])
def get(self, user_token): #return {User_data: User[token]} FACEBOOK_APP_ID = '134416106741047' facebook = Pyfb(FACEBOOK_APP_ID) #Opens a new browser tab instance and authenticates with the facebook API #It redirects to an url like http://www.facebook.com/connect/login_success.html#access_token=[access_token]&expires_in=0 facebook.authenticate() #Copy the [access_token] and enter it below getToken = user_token#'CAACEdEose0cBACIgotCQGDecYsWW1O7wrc5saw0ZCxrM8nKzF3wWgIvQqGyb9H5u3MIBKak9jcYc3l1CNZCdYniVI3tweTC8vX2PdibMlJrdrH1LIeJnmgWQS8WpkXyRzY8dpvGgFDZARq2amdAZBEXEXJePKSuMqTIOXCCfQMzNd3QMtldxD25lkFg3IANRVfjviSo6uQZDZD' #Sets the authentication token facebook.set_access_token(getToken) #Gets info about myself me = facebook.get_myself() me_pic = facebook.fql_query('SELECT pic_small FROM user WHERE uid = me()') #friends = facebook.get_friends() me_name = me.name me_id = me.id me_gender = me.gender location = getattr(me, "location") me_location = location.name for i in me_pic: try: my_pic = i.pic_small except AttributeError: my_pic = 'None' try: me_birthday = me.birthday except AttributeError: me_birthday = 'None' try: me_status = me.relationship_status except AttributeError: me_status = 'None' try: me_link = me.link except AttributeError: me_link = 'None' me_all = {'name': me_name, 'id': me_id, 'gender': me_gender, 'location': me_location, 'birthday': me_birthday, 'status': me_status, 'link': me_link, 'picture': my_pic } #db.dannysaban.insert(me_all) #print 'me - done!' #get_me = db.dannysaban.find({'id': me_id}) return me_all ''' update user data '''
class pyfbTests(unittest.TestCase): def setUp(self): self.facebook = Pyfb(FACEBOOK_APP_ID) self.facebook.set_access_token(FACEBOOK_TOKEN) self.me = self.facebook.get_myself() def test_auth(self): self.assertEquals(type(self.me.name), type(unicode())) def test_get_friends(self): self.assertEquals(type(self.facebook.get_friends(self.me.id)), type(list()))
def login_facebook(request): if 'access_token' not in request.GET: return Response(ReturnObject(RetCode._FAIL, _('Access token not exist in request'), None).to_json()) try: access_token = request.GET.get('access_token') facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(access_token) result = _render_user(facebook, request) if result != '': return Response(ReturnObject(RetCode._FAIL, result, None).to_json()) else: current_player = get_current_user(request) return Response(ReturnObject(RetCode._SUCCESS, _('Login successfully'), current_player).to_json()) except Exception, error: return Response(ReturnObject(RetCode._SYSTEM_ERROR, _('System error, access token is wrong'), None).to_json())
def facebook_javascript_login_sucess(request): access_token = request.GET.get("access_token") # print "printing access token" facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(access_token) user_id = "https://graph.facebook.com/me?access_token="+str(access_token) UID = requests.get(user_id) # print UID if UID.ok: jData = json.loads(UID.content) UID = jData['id'] print str(UID) #print FACEBOOK USER ID url = "http://graph.facebook.com/v2.7/"+str(UID)+"/picture?redirect=false" print url myResponse = requests.get(url) print myResponse if myResponse.ok: jData = json.loads(myResponse.content) data = jData['data'] pic_url = data['url'] #Profile Picture print pic_url else: myResponse.raise_for_status() print "error" photos = facebook.get_photos() print "These are my photos:\n" facebook_user = True users = User.objects.all() me = facebook.get_myself() fullname = me.name.split() first_name = str(fullname[0]) last_name = str(fullname[1]) fullname = first_name + last_name if User.objects.filter(username=fullname).exists(): u = authenticate(username=fullname, password=fullname) user_profile = UserProfile.objects.get(user=) login(request, u) return HttpResponseRedirect('/') else: return _render_user(facebook, facebook_user, request)
def feed(request): usergenres = request.user.genretouser.all() user = request.user if request.method == 'POST': form = PostingForm(request.POST) if form.is_valid(): if request.POST.get('facebookshare'): try: fb = FacebookProfiles.objects.get(user=user) fbk = Pyfb(settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY) fbk.set_access_token(fb.fbk_token) fbk.publish(message=form.cleaned_data['content'], id=fb.fbk_id) except ObjectDoesNotExist: pass if request.POST.get('twittershare'): try: tw = TwitterProfiles.objects.get(user=user) twttr = tweepy.OAuthHandler(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET) twttr.set_access_token(tw.oauth_token, tw.oauth_secret) api = tweepy.API(twttr) me = api.me() api.update_status(form.cleaned_data['content'] + ' via @likewyss') except ObjectDoesNotExist: pass return HttpResponseRedirect('/feed/') else: form = PostingForm() var = RequestContext(request, { 'form':form, 'user':request.user, 'genres':usergenres }) return render_to_response('pages/feed.html', var)
def login_facebook(request): if 'access_token' not in request.GET: return Response( ReturnObject(RetCode._FAIL, _('Access token not exist in request'), None).to_json()) try: access_token = request.GET.get('access_token') facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(access_token) result = _render_user(facebook, request) if result != '': return Response( ReturnObject(RetCode._FAIL, result, None).to_json()) else: current_player = get_current_user(request) return Response( ReturnObject(RetCode._SUCCESS, _('Login successfully'), current_player).to_json()) except Exception, error: return Response( ReturnObject(RetCode._SYSTEM_ERROR, _('System error, access token is wrong'), None).to_json())
def FacebookMobileLogin (request): if request.method == 'POST': primary_user = 1 facebook_id = request.POST.get('fb_user_id', None) facebook_email = request.POST.get('fb_user_email', None) token = request.POST.get('oauth_token', None) expiration = request.POST.get('expiration', None) creation = request.POST.get('created', None) if not request.user.is_authenticated(): if token and expiration and creation: new_token = OAuthToken(token=token, issued_at=datetime.fromtimestamp(float(creation)), expires_at=datetime.fromtimestamp(float(expiration))) new_token.save() facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(token) me = facebook.get_myself() if (type(me.name) == type(unicode())): try: find_fb_user = FacebookAppUser.objects.get(fb_uid=me.id) find_fb_user.oauth_token = new_token find_fb_user.save() user = User.objects.get(pk=find_fb_user.appuser.user.pk) user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) #response = json.dumps({'status': 'success', 'user':user}) serialized_response = serializers.serialize('json', [find_fb_user.appuser, ], relations={ 'user': {'fields': ( 'username', 'first_name', 'last_name', 'email', )}, 'facebook_user': {'fields': ( 'fb_uid', 'fb_email', )}, }) return HttpResponse(serialized_response, mimetype="application/json") except FacebookAppUser.DoesNotExist: birthday = None if hasattr(me, 'birthday'): birthday = datetime.strptime(me.birthday, '%m/%d/%Y') new_fb_user = FacebookAppUser(user_id=primary_user, fb_uid=me.id, fb_email=me.email, oauth_token=new_token) new_fb_user.save() new_user = User.objects.create_user(username=me.username.lower(), email=me.email, password=token) new_user.first_name = me.first_name new_user.last_name = me.last_name new_user.save() new_appuser = AppUser(user=new_user, facebook_user=new_fb_user, gender=me.gender, birthdate=birthday) new_appuser.save() new_fb_user.appuser = new_appuser new_fb_user.save() new_user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, new_user) #response = json.dumps({'status': 'success', 'user':new_user}) #serialized_response = serializers.serialize('json', [ new_user, ]) #return HttpResponse(me.__dict__) serialized_response = serializers.serialize('json', [new_appuser, ], relations={ 'user': {'fields': ('username', 'first_name', 'last_name', 'email', )}, 'facebook_user': {'fields': ( 'fb_uid', 'fb_email', )}, }) return HttpResponse(serialized_response, mimetype="application/json") else: if token and expiration and creation: new_token = OAuthToken(token=token, issued_at=datetime.fromtimestamp(float(creation)), expires_at=datetime.fromtimestamp(float(expiration))) new_token.save() facebook = Pyfb(FACEBOOK_APP_ID) facebook.set_access_token(token) me = facebook.get_myself() if (type(me.name) == type(unicode())): try: #also need to update to the current token fb_user = FacebookAppUser.objects.get(fb_uid=me.id) user = fb_user.appuser.user #response = json.dumps({'status': 'success', 'user':user, 'fb_user':fb_user}) #serialized_response = serializers.serialize('json', [ user, fb_user, ]) #return HttpResponse(me.__dict__) serialized_response = serializers.serialize('json', [fb_user.appuser, ], relations={ 'user': {'fields': ( 'username', 'first_name', 'last_name', 'email', )}, 'facebook_user': {'fields': ( 'fb_uid', 'fb_email', )}, }) return HttpResponse(serialized_response, mimetype="application/json") #return HttpResponse(response, mimetype="application/json") #if (find_fb_user.appuser.user == request.user): #find_fb_user.oauth_token = new_token #find_fb_user.save() #response = json.dumps({'status': 'success',}) #return HttpResponse(response, mimetype="application/json") #else: #response = json.dumps({'status': 'unauthorized',}) #return HttpResponse(response, mimetype="application/json", status=401) except FacebookAppUser.DoesNotExist: birthday = None if hasattr(me, 'birthday'): birthday = datetime.strptime(me.birthday, '%m/%d/%Y') new_fb_user = FacebookAppUser(user_id=primary_user, fb_uid=me.id, fb_email=me.email, oauth_token=new_token) new_fb_user.save() current_user = request.user current_user.first_name = me.first_name current_user.last_name = me.last_name current_user.save() app_user = current_user.appuser app_user.gender = me.gender app_user.birthdate = birthday app_user.facebook_user = new_fb_user app_user.save() return HttpResponse('profile updated with facebook') return HttpResponse('failed', status=400)
from django.contrib.auth.models import User from authentication.models import * from core.models import * from django.conf import settings from pyfb import Pyfb oauth = Pyfb(settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY) u = User.objects.get(username='******') f = FacebookProfiles.objects.get(user=u) oauth.set_access_token(f.fbk_token) api = tweepy.API(oauth) me = api.me()
#Your APP ID. It Needs to register your application on facebook #http://developers.facebook.com/ FACEBOOK_APP_ID = '178358228892649' facebook = Pyfb(FACEBOOK_APP_ID) #Opens a new browser tab instance and authenticates with the facebook API #It redirects to an url like http://www.facebook.com/connect/login_success.html#access_token=[access_token]&expires_in=0 facebook.authenticate() #Copy the [access_token] and enter it below token = raw_input("Enter the access_token\n") #Sets the authentication token facebook.set_access_token(token) #Gets info about myself me = facebook.get_myself() print "-" * 40 print "Name: %s" % me.name print "From: %s" % me.hometown.name print print "Speaks:" for language in me.languages: print "- %s" % language.name print print "Worked at:"
def get_third_party_auth(self, auth_type, facebook_access_token=None): """Wrangle and return authentication data from third parties. Args: auth_type: str, either 'google', or 'facebook' facebook_access_token: str, returned by the facebook javasript sdk when user logs in. Returns tuple of: dictionary of user information, which will always contain the key 'auth_id', or None if no third-party info is found. error as a string """ if auth_type == 'google': gae_user = app_engine_users.get_current_user() if not gae_user: logging.info("No google login found.") return (None, 'credentials_missing') # Get user first and last names from nickname first_name = None last_name = None if gae_user.nickname(): nickname = gae_user.nickname() if ' ' in nickname: first_name = nickname.split(' ')[0] last_name = nickname.split(' ')[1] else: if '@' in nickname: first_name = nickname.split('@')[0] else: first_name = nickname # Combine fields in user keyword arguments user_kwargs = { 'auth_id': User.get_auth_id(auth_type, gae_user.user_id()), 'email': gae_user.email(), 'google_id': gae_user.user_id(), 'first_name': first_name, 'last_name': last_name, } elif auth_type == 'facebook': fb_api = Facebook(config.facebook_app_id) fb_api.set_access_token(facebook_access_token) me = fb_api.get_myself() if me: if not hasattr(me, 'email'): # Facebook users might not have an email address, or they # might refuse to share it with us. We can't move forward # without a way to contact them, so treat it as if their # credentials were missing. logging.warning("Found fb user, but they had no email.") return (None, 'email_not_found') user_kwargs = { 'auth_id': User.get_auth_id(auth_type, me.id), 'email': me.email, 'facebook_id': me.id, 'first_name': me.first_name, 'last_name': me.last_name, } else: # The connection between PERTS and facebook is expired or has # been used with the GraphAPI already. logging.error("Facebook connection expired.") return (None, 'credentials_missing') return (user_kwargs, None)
#Your APP ID. You Need to register the application on facebook #http://developers.facebook.com/ FACEBOOK_APP_ID = 'YOUR_APP_ID' pyfb = Pyfb(FACEBOOK_APP_ID) #Opens a new browser tab instance and authenticates with the facebook API #It redirects to an url like http://www.facebook.com/connect/login_success.html#access_token=[access_token]&expires_in=0 pyfb.authenticate() #Copy the [access_token] and enter it below token = raw_input("Enter the access_token\n") #Sets the authentication token pyfb.set_access_token(token) photos = pyfb.get_photos() print "These are my photos:\n" for photo in photos: print photo.picture #Just call the method next to get the next page of photos! more_photos = photos.next() print "\nMore photos:\n" for photo in more_photos: print photo.picture more_more_photos = more_photos.next()