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
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)
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
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 graph(self): return graph_api.get_graph(self._get_token_object().token)