diff --git a/src/facegraph/canvas.py b/src/facegraph/canvas.py index b206626..333bdc2 100644 --- a/src/facegraph/canvas.py +++ b/src/facegraph/canvas.py @@ -10,12 +10,13 @@ import signature -def b64url_decode(encoded): - """Decode a string encoded in URL-safe base64 without padding.""" - - # The padding should round the length of the string up to a multiple of 4. - padding_fixed = encoded + (((4 - (len(encoded) % 4)) % 4) * '=') - return base64.urlsafe_b64decode(str(padding_fixed)) +def b64url_encode(data): + return base64.urlsafe_b64encode(data).rstrip('=') + +def b64url_decode(data): + data = data.encode(u'ascii') + data += '=' * (4 - (len(data) % 4)) + return base64.urlsafe_b64decode(data) def decode_signed_request(app_secret, signed_request): diff --git a/src/facegraph/django/middleware.py b/src/facegraph/django/middleware.py index 170b57a..d9b5675 100644 --- a/src/facegraph/django/middleware.py +++ b/src/facegraph/django/middleware.py @@ -76,7 +76,7 @@ class FacebookCanvasMiddleware(object): def process_request(self, request): app_secret = self.app_secret(request) - raw_fbrequest = request.GET.get('signed_request', None) + raw_fbrequest = request.REQUEST.get('signed_request', None) if not (app_secret and raw_fbrequest): request.fbrequest = None return diff --git a/src/facegraph/fql.py b/src/facegraph/fql.py index b3689fb..9f751b4 100644 --- a/src/facegraph/fql.py +++ b/src/facegraph/fql.py @@ -107,9 +107,8 @@ def multi(self, queries, **params): return self.fetch_json(url) - @classmethod - def fetch_json(cls, url, data=None): - response = json.loads(cls.fetch(url, data=data)) + def fetch_json(self, url, data=None): + response = json.loads(self.__class__.fetch(url, data=data)) if isinstance(response, dict): if response.get("error_msg"): code = response.get("error_code") diff --git a/src/facegraph/graph.py b/src/facegraph/graph.py index 3a83948..dcacf25 100644 --- a/src/facegraph/graph.py +++ b/src/facegraph/graph.py @@ -408,7 +408,7 @@ class Node(bunch.Bunch): def user_location(user_id): user = graph[user_id]() - if 'location' in user: + if 'location' in user.keys(): return user.location return False