Esempio n. 1
0
 def authenticate(self, code=None, redirect_uri=None):
     graph = graph_api.get_graph(timeout=FACEBOOK_TIMEOUT)
     args = {
         'client_id': settings.FACEBOOK_APP_ID,
         'client_secret': settings.FACEBOOK_APP_SECRET,
         'redirect_uri': redirect_uri,
         'code': code
     }
     try:
         data = graph.get('/oauth/access_token', **args)
     except exceptions.FacebookError as e:
         message = "Facebook login failed %s" % e.message
         code_used_message = 'This authorization code has been used.'
         if e.code == 100 and e.message == code_used_message:
             logger.info(message)
             return None
         else:
             logger.warning(message)
             raise
     except exceptions.FacepyError as e:
         logger.warning("Facebook login connection error")
         raise
     try:
         access_token = urlparse.parse_qs(data)['access_token'][-1]
     except KeyError as e:
         args['client_secret'] = '*******%s' % args['client_secret'][-4:]
         logger.error(e,
                      extra={
                          'facebook_response': data,
                          'sent_args': args
                      })
         return None
     user = USER_FACTORY.get_user(access_token)
     return user
 def authenticate(self, code=None, redirect_uri=None):
     graph = graph_api.get_graph(timeout=FACEBOOK_TIMEOUT)
     args = {
         'client_id': settings.FACEBOOK_APP_ID,
         'client_secret': settings.FACEBOOK_APP_SECRET,
         'redirect_uri': redirect_uri,
         'code': code
     }
     try:
         data = graph.get('/oauth/access_token', **args)
     except exceptions.FacebookError as e:
         message = "Facebook login failed %s" % e.message
         code_used_message = 'This authorization code has been used.'
         if e.code == 100 and e.message == code_used_message:
             logger.info(message)
             return None
         else:
             logger.warning(message)
             raise
     except exceptions.FacepyError as e:
         logger.warning("Facebook login connection error")
         raise
     try:
         access_token = urlparse.parse_qs(data)['access_token'][-1]
     except KeyError as e:
         args['client_secret'] = '*******%s' % args['client_secret'][-4:]
         logger.error(e, extra={'facebook_response': data,
                                'sent_args': args})
         return None
     user = USER_FACTORY.get_user(access_token)
     return user
Esempio n. 3
0
def get_application_graph(version=None):
    version = version or getattr(settings, 'FACEBOOK_API_VERSION', '2.1')
    token = (facepy.utils
             .get_application_access_token(settings.FACEBOOK_APP_ID,
                                           settings.FACEBOOK_APP_SECRET,
                                           api_version=version))
    return graph_api.get_graph(token)
Esempio n. 4
0
 def get_long_lived_access_token(access_token):
     graph = graph_api.get_graph()
     args = {
         'client_id': settings.FACEBOOK_APP_ID,
         'client_secret': settings.FACEBOOK_APP_SECRET,
         'grant_type': 'fb_exchange_token',
         'fb_exchange_token': access_token,
     }
     data = graph.get('/oauth/access_token', **args)
     try:
         access_token = urlparse.parse_qs(data)['access_token'][-1]
         expires_in_seconds = int(urlparse.parse_qs(data)['expires'][-1])
     except KeyError:
         logger.warning('Invalid Facebook response.')
         raise FacebookError
     return access_token, expires_in_seconds
Esempio n. 5
0
 def get_user(self, access_token):
     profile = utils.get_from_graph_api(
         graph_api.get_graph(access_token, timeout=FACEBOOK_TIMEOUT), 'me')
     return self._product_user(access_token, profile)
 def get_user(self, access_token):
     profile = utils.get_from_graph_api(
         graph_api.get_graph(access_token, timeout=FACEBOOK_TIMEOUT),
         'me')
     return self._product_user(access_token, profile)
Esempio n. 7
0
 def graph(self):
     return graph_api.get_graph(self._get_token_object().token)