class FacebookCLient(object): def __init__(self, session): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self._client = Pyfb(API_KEY) self.active = False def request_permitions(self): conn_url = self._client.get_auth_url(REDIRECT_URL) self._session.social_request(conn_url) def set_token(self, token, active): '''Sets the authentication token''' self.active = active if self.active and not token is None: self._client.set_access_token(token) self.active = True def _get_personal_nick(self): nick = "" if self.active: try: me = self._client.get_myself() nick = me.name except PyfbException, ex: log.warn("couldn't get nick " + str(ex)) return nick
class FacebookCLient(object): def __init__(self, session, token): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self._client = Pyfb(API_KEY) self.active = False self.active_social_request = False self._nick = None self._avatar_cache = None self._avatar_path = None # only ask for access token if we didn't have one if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True) def request_permitions(self): '''ask user to grant access to facebook APIs''' if self.active_social_request: #avoid multiple requests return conn_url = self._client.get_auth_url(REDIRECT_URL) self.active_social_request = True self._session.social_request(conn_url) def set_token(self, token, active): '''Set the authentication token''' self.active = active if self.active and not token is None: self._client.set_access_token(token) self.active = True self.active_social_request = False def _get_personal_nick(self): '''get the person name as nick''' if self.active and self._nick is None: try: params = {} params["fields"] = "name" me = self._client.get_myself() self._nick = me.name except OAuthException: self.request_permitions() except PyfbException, ex: log.warn("couldn't get nick " + str(ex)) return self._nick
def __init__(self, session, token): self._session = session self.get_app_data() self._client = Pyfb(self.api_key) self.active = False self.active_social_request = False self._nick = None self._avatar_cache = None self._avatar_path = None # only ask for access token if we didn't have one if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True)
def __init__(self, session): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self._client = Pyfb(API_KEY) self.active = False
def __init__(self, session, token): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self.get_app_data() self._client = Pyfb(self.api_key) self.active = False self.active_social_request = False self._nick = None self._avatar_cache = None self._avatar_path = None # only ask for access token if we didn't have one if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True)
def __init__(self, session, token): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self._client = Pyfb(API_KEY) self.active = False self._nick = None self._avatar_cache = None self._avatar_path = None if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True)
def facebook_login_success(request): code = request.GET.get('code') facebook = Pyfb(settings.FACEBOOK_APP_ID) facebook.set_permissions("") facebook.get_access_token(settings.FACEBOOK_SECRET_KEY, code, redirect_uri=settings.FACEBOOK_REDIRECT_URL) me = facebook.get_myself() authenticator = FacebookBackend() user = authenticator.authenticate(me) login(request, user) return HttpResponseRedirect('/')
class FacebookCLient(object): def __init__(self, session, token): self._session = session self.get_app_data() self._client = Pyfb(self.api_key) self.active = False self.active_social_request = False self._nick = None self._avatar_cache = None self._avatar_path = None # only ask for access token if we didn't have one if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True) def get_app_data(self): f = urllib.urlopen("https://github.com/emesene/emesene/raw/master/emesene/e3/xmpp/facebook.json") s = f.read() f.close() appdata = json.loads(s) self.api_key = appdata["api_key"] self.redirect_url = appdata["redirect_url"] def request_permitions(self): '''ask user to grant access to facebook APIs''' if self.active_social_request: #avoid multiple requests return conn_url = self._client.get_auth_url(self.redirect_url) self.active_social_request = True self._session.social_request(conn_url) def set_token(self, token, active): '''Set the authentication token''' self.active = active if self.active and not token is None: self._client.set_access_token(token) self.active = True self.active_social_request = False def _get_personal_nick(self): '''get the person name as nick''' if self.active and self._nick is None: try: params = {} params["fields"] = "name" me = self._client.get_myself(params) self._nick = me.name except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get nick " + str(ex)) return self._nick nick = property(fget=_get_personal_nick, fset=None) def _set_personal_message(self, message): '''publish a message into your wall''' if self.active and len(message)!= 0: try: self._client.publish(message, "me") except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't publish message " + str(ex)) def _get_personal_message(self): '''gets last message published into your wall''' message = "" if self.active: try: params = {} params["limit"] = 1 params["fields"] = "message" messages = self._client.get_statuses("me", params) if len(messages) > 0: message = messages[0].message except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get message " + str(ex)) return message message = property(fget=_get_personal_message, fset=_set_personal_message) def get_unread_mail_count(self): '''get current unread mail count''' unread_count = 0 if self.active: try: qry = self._client.fql_query("SELECT unread_count FROM mailbox_folder WHERE folder_id = 0 and viewer_id = me()") unread_count = qry[0].unread_count except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get unread messages count " + str(ex)) return unread_count def get_new_mail_info(self): '''return a tuple with sendername,message_body corresponding to the lastest unread message''' try: query_thread = self._client.fql_query("SELECT thread_id FROM thread WHERE folder_id = 0 and unread = 1") orclause = "WHERE " for thread in query_thread: orclause = "%s thread_id = %s OR " % (orclause, thread.thread_id) #strip last 'OR ' orclause = orclause[0:len(orclause)-3] orclause = "%s ORDER BY created_time DESC" % orclause query_message = self._client.fql_query("SELECT body, author_id FROM message %s" % orclause) query_user = self._client.fql_query("SELECT name FROM user WHERE uid = %s" % query_message[0].author_id) return (query_user[0].name, query_message[0].body) except OAuthException: self.request_permitions() except PyfbException, IOError: #we don't have any unread msg return None
class FacebookCLient(object): def __init__(self, session, token): self._session = session self._session.config.get_or_set('b_fb_mail_check', True) self._session.config.get_or_set('b_fb_status_download', False) self._session.config.get_or_set('b_fb_status_write', False) self._session.config.get_or_set('b_fb_picture_download', False) self.get_app_data() self._client = Pyfb(self.api_key) self.active = False self.active_social_request = False self._nick = None self._avatar_cache = None self._avatar_path = None # only ask for access token if we didn't have one if token is None: self.request_permitions() else: #reuse old token self.set_token(token, True) def get_app_data(self): f = urllib.urlopen("https://github.com/emesene/emesene/raw/master/emesene/e3/xmpp/facebook.json") s = f.read() f.close() appdata = json.loads(s) self.api_key = appdata["api_key"] self.redirect_url = appdata["redirect_url"] def request_permitions(self): '''ask user to grant access to facebook APIs''' if self.active_social_request: #avoid multiple requests return conn_url = self._client.get_auth_url(self.redirect_url) self.active_social_request = True self._session.social_request(conn_url) def set_token(self, token, active): '''Set the authentication token''' self.active = active if self.active and not token is None: self._client.set_access_token(token) self.active = True self.active_social_request = False def _get_personal_nick(self): '''get the person name as nick''' if self.active and self._nick is None: try: params = {} params["fields"] = "name" me = self._client.get_myself(params) self._nick = me.name except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get nick " + str(ex)) return self._nick nick = property(fget=_get_personal_nick, fset=None) def _set_personal_message(self, message): '''publish a message into your wall''' if self.active and len(message)!= 0: try: self._client.publish(message, "me") except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't publish message " + str(ex)) def _get_personal_message(self): '''gets last message published into your wall''' message = "" if self.active: try: params = {} params["limit"] = 1 params["fields"] = "message" messages = self._client.get_statuses("me", params) if len(messages) > 0: message = messages[0].message except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get message " + str(ex)) return message message = property(fget=_get_personal_message, fset=_set_personal_message) def get_unread_mail_count(self): '''get current unread mail count''' unread_count = 0 if self.active: try: qry = self._client.fql_query("SELECT unread_count FROM mailbox_folder WHERE folder_id = 0 and viewer_id = me()") unread_count = qry[0].unread_count except OAuthException: self.request_permitions() except (PyfbException, IOError) as ex: log.warn("couldn't get unread messages count " + str(ex)) return unread_count def get_new_mail_info(self): '''return a tuple with sendername,message_body corresponding to the lastest unread message''' try: query_thread = self._client.fql_query("SELECT thread_id FROM thread WHERE folder_id = 0 and unread = 1") orclause = "WHERE " for thread in query_thread: orclause = "%s thread_id = %s OR " % (orclause, thread.thread_id) #strip last 'OR ' orclause = orclause[0:len(orclause)-3] orclause = "%s ORDER BY created_time DESC" % orclause query_message = self._client.fql_query("SELECT body, author_id FROM message %s" % orclause) query_user = self._client.fql_query("SELECT name FROM user WHERE uid = %s" % query_message[0].author_id) return (query_user[0].name, query_message[0].body) except OAuthException: self.request_permitions() except PyfbException, IOError: #we don't have any unread msg return None
def facebook_login(request): facebook = Pyfb(settings.FACEBOOK_APP_ID) facebook.set_permissions("") return HttpResponseRedirect(facebook.get_auth_code_url(redirect_uri=settings.FACEBOOK_REDIRECT_URL))