Пример #1
0
 def process(self, file):
     facebook = Facebook(self.apikey, self.secret)
     facebook.session_key = file["fbsession"]
     try:
         userinfo = facebook.users.getLoggedInUser()
     except FacebookError, e:
         # TODO: Error handling. What do we do if the user isn't logged in?
         if e.code == 102:  # session key has expired
             log.info("%s is not a valid session, removing upload", file["fbsession"])
             file["msg"] = "Facebook session not valid"
             file["na"] = na.AUTHENTICATE
             self.cleanup(file)
             return False
Пример #2
0
def get_connected_friends(api_key, secret_key, fb_session_key, fb_uid, retry=0):
    """Return a list with the FB user's friends' IDs that are connected to our app"""
    retval = []
    try:
        facebook = Facebook(api_key, secret_key)
        facebook.session_key = fb_session_key
        info = facebook.friends.getAppUsers()
        retval = info
    except urllib2.URLError, ue:
        if retry < _MAX_RETRIES:
            # retry once
            time.sleep(0.1)
            return get_connected_friends(api_key, secret_key, fb_session_key, fb_uid, retry=retry + 1)
        else:
            _log.exception(ue)
            _log.warn("Could not get FB friends: %s", fb_uid)
Пример #3
0
def get_user_info(api_key, secret_key, fb_session_key, fb_uid, retry=0):
    """Return a dictionary with the FB user's name and email address"""
    retval = {"name": None, "email": None}
    try:
        facebook = Facebook(api_key, secret_key)
        facebook.session_key = fb_session_key
        info = facebook.users.getInfo([fb_uid], ["name", "proxied_email"])[0]
        retval["name"] = info.get("name", None)
        retval["email"] = info.get("proxied_email", None)
    except urllib2.URLError, ue:
        if retry < _MAX_RETRIES:
            # retry once
            time.sleep(0.1)
            return get_user_info(api_key, secret_key, fb_session_key, fb_uid, retry=retry + 1)
        else:
            _log.exception(ue)
            _log.warn("Could not get FB user info: %s", fb_uid)
Пример #4
0
 def facebook(self):
     """Get a facebook object, if pyfacebook is present, the user is logged
     in and is a facebook connect user. Otherwise this is None."""
     try:
         from facebook import Facebook
     except ImportError:
         log.warning("PyFacebook is not installed!")
     else:
         if self.user and self.user.profile.uses_facebook_connect:
             # This implies, that the correct cookies must be set. We don't
             # double check for that.
             api_key = get_app().cfg['facebook/api_key']
             secret_key = get_app().cfg['facebook/secret_key']
             facebook = Facebook(api_key, secret_key)
             # Setting the cookie values
             # It's so cool to have no private attributes. (;
             facebook.uid = self.session['fb_user_id']
             facebook.session_key = self.session['fb_session_id']
             return facebook
Пример #5
0
def get_user_info(api_key, secret_key, fb_session_key, fb_uid, retry=0):
    """Return a dictionary with the FB user's name and email address"""
    retval = {'name': None, 'email': None}
    try:
        facebook = Facebook(api_key, secret_key)
        facebook.session_key = fb_session_key
        info = facebook.users.getInfo([fb_uid], ['name', 'proxied_email'])[0]
        retval['name'] = info.get('name', None)
        retval['email'] = info.get('proxied_email', None)
    except urllib2.URLError, ue:
        if retry < _MAX_RETRIES:
            # retry once
            time.sleep(.1)
            return get_user_info(api_key,
                                 secret_key,
                                 fb_session_key,
                                 fb_uid,
                                 retry=retry + 1)
        else:
            _log.exception(ue)
            _log.warn("Could not get FB user info: %s", fb_uid)
Пример #6
0
def web_app(request):
    """Get the user's friends and their pictures. This example uses
       the Django web framework, but should be adaptable to others."""

    # Get api_key and secret_key from a file
    fb_file = open('facebook_keys.txt').readlines()
    api_key = fb_file[0].strip()
    secret_key = fb_file[1].strip()
    fb = Facebook(api_key, secret_key)

    # Use the data from the cookie if present
    if 'session_key' in request.session and 'uid' in request.session:
        fb.session_key = request.session['session_key']
        fb.uid = request.session['uid']
    else:
        
        try:
            fb.auth_token = request.GET['auth_token']
        except KeyError:
            # Send user to the Facebook to login
            return HttpResponseRedirect(fb.get_login_url())

        # getSession sets the session_key and uid
        # Store these in the cookie so we don't have to get them again
        fb.auth.getSession()
        request.session['session_key'] = fb.session_key
        request.session['uid'] = fb.uid

    try:
        friend_ids = fb.friends.get()
    except FacebookError, e:
        # Error 102 means the session has expired.
        # Delete the cookie and send the user to Facebook to login
        if e.info['code'] == u'102':
            del request.session['session_key']
            del request.session['uid']
            return HttpResponseRedirect(fb.get_login_url())
        else:
            # Other Facebook errors are possible too. Don't ignore them.
            raise
Пример #7
0
def get_connected_friends(api_key,
                          secret_key,
                          fb_session_key,
                          fb_uid,
                          retry=0):
    """Return a list with the FB user's friends' IDs that are connected to our app"""
    retval = []
    try:
        facebook = Facebook(api_key, secret_key)
        facebook.session_key = fb_session_key
        info = facebook.friends.getAppUsers()
        retval = info
    except urllib2.URLError, ue:
        if retry < _MAX_RETRIES:
            # retry once
            time.sleep(.1)
            return get_connected_friends(api_key,
                                         secret_key,
                                         fb_session_key,
                                         fb_uid,
                                         retry=retry + 1)
        else:
            _log.exception(ue)
            _log.warn("Could not get FB friends: %s", fb_uid)
Пример #8
0
    file_session_write.close()
    file_uid_write = open(unicode(home)+unicode("faccialibro.user-id"),"w+")
    file_uid_write.write(str(session['uid']))
    file_uid_write.close()
    file_secret_write = open(unicode(home)+unicode("faccialibro.secret"),"w+")
    file_secret_write.write(str(session['secret']))
    file_secret_write.close()
else:
    file_uid = open(unicode(home)+unicode("faccialibro.user-id"),"r")
    uid_read = file_uid.read()
    file_uid.close()
    file_secret = open(unicode(home)+unicode("faccialibro.secret"),"r")
    secret_read = file_secret.read()
    file_secret.close()
    fb = Facebook(api_key='261918900490462', secret_key='c2bb3994ddcd0078e33bc9fb63daa434')
    fb.session_key = session_read
    fb.uid = uid_read
    fb.secret = secret_read
loop = GObject.MainLoop()
launcher = Unity.LauncherEntry.get_for_desktop_id ("Faccialibro.desktop")
current_unseen = 0
unseen_changed = False
def updates():
    global current_unseen, unseen_changed
    notifiche = fb.notifications.get()
    unseen = notifiche['notification_counts']['unseen'] + notifiche['messages']['unseen'] + notifiche['friend_requests_counts']['unseen']
    if unseen == current_unseen:
        unseen_changed = False
    elif unseen > 0:
        launcher.set_property("count", unseen)
        launcher.set_property("count_visible", True)
Пример #9
0
#sudo apt-get install python-facebook
#source http://stackoverflow.com/a/5191033
from facebook import Facebook
#creat app via visiting https://developers.facebook.com/apps and get below keys
api_key = '273762xxxxxxxx'
secret  = 'dffc85xxxxxxxxxxxxxxxxx'

session_key = '451XXX'
#session_onetime_code = 'LX2XXX'

ga = Facebook(api_key, secret)
ga.session_key = session_key

# now use the ga object for playing around
#You might need to get an infinite session key which you can get from here: http://www.facebook.com/code_gen.php?v=1.0&api_key=YOUR_API_KEY

#Use this code to get convert the code from above URL into infinite session key:

def generate_session_from_onetime_code(ga, code):
    ga.auth_token = code
    return ga.auth.getSession()
print generate_session_from_onetime_code(ga, session_key)

print ga


#sourch http://blog.chmouel.com/2010/01/09/get-facebook-albums-with-python/
import os
import urllib
#ga.auth.createToken()
#ga.login()
Пример #10
0
from pickle import dump,load
from urllib2 import *
from xml.dom.minidom import parse
from time import sleep,localtime,strftime

# Get api_key and secret_key from a file
fbs = open('facebook_keys.txt').readlines()
facebook = Facebook(fbs[0].strip(), fbs[1].strip())

while True:
	print strftime("%a, %d %b %Y %H:%M:%S", localtime())
	try:
		session = load(file(".session"))
		print session
		facebook.secret = session['secret']
		facebook.session_key = session['session_key']
		facebook.session_key_expires = session['expires']
		facebook.uid = session['uid']
	except (EOFError,IOError):
		token = facebook.auth.createToken()
		print "token",facebook.auth._client.auth_token
		# Show login window
		facebook.login()

		# Login to the window, then press enter
		print 'After logging in, press enter...'
		raw_input()
		res = facebook.auth.getSession()
		dump(res,file(".session","w"))

	try: