def get_test_users(): access_token = get_app_access_token() request = httplib2.Http() response, content = request.request( "https://graph.facebook.com/%s/accounts/test-users?access_token=%s" % (settings.OAUTH['facebook']['app_key'], access_token)) if response['status'] != 200: raise GraphAPIError(response, content) return content
def add_test_users(): access_token = get_app_access_token() request = httplib2.Http() args = { 'permissions': settings.OAUTH['facebook']['scope'], 'access_token': access_token, } response, content = request.request( "https://graph.facebook.com/%s/accounts/test-users?installed=true&method=post&" % settings.OAUTH['facebook']['app_key'] + urllib.urlencode(args), ) if response['status'] != 200: raise GraphAPIError(response, content) return content
def get_access_token(code, callback_url, client_id, client_secret): args = { 'redirect_uri': callback_url, 'client_id': client_id, 'client_secret': client_secret, 'code': code } request = httplib2.Http() response, content = request.request( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)) if response['status'] != 200: raise Exception(response) raise GraphAPIError(content["error_code"], content["error_msg"]) result = content.split("=")[1] return result
def parse_signed_request(signed_request, app_secret=settings.OAUTH['facebook']['app_secret']): """Return dictionary with signed request data.""" try: l = signed_request.split('.', 2) encoded_sig = str(l[0]) payload = str(l[1]) except IndexError: raise ValueError("'signed_request' malformed") sig = base64.urlsafe_b64decode(encoded_sig + "=" * ((4 - len(encoded_sig) % 4) % 4)) data = base64.urlsafe_b64decode(payload + "=" * ((4 - len(payload) % 4) % 4)) data = _parse_json(data) if data.get('algorithm').upper() != 'HMAC-SHA256': raise ValueError("'signed_request' is using an unknown algorithm") else: expected_sig = hmac.new(app_secret, msg=payload, digestmod=hashlib.sha256).digest() if sig != expected_sig: raise ValueError("'signed_request' signature mismatch") else: if 'code' in data: args = { 'client_id': settings.OAUTH['facebook']['app_key'], 'client_secret': settings.OAUTH['facebook']['app_secret'], 'code': data['code'], 'redirect_uri': '' } request = httplib2.Http() response, content = request.request( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)) if response['status'] != 200: raise GraphAPIError(content["error_code"], content["error_msg"]) data['oauth_token'] = content.split("=")[1] return data
def get_app_access_token(): """ Get the access_token for the app that can be used for insights and creating test users application_id = retrieved from the developer page application_secret = retrieved from the developer page returns the application access_token """ # Get an app access token args = { 'grant_type': 'client_credentials', 'client_id': settings.OAUTH['facebook']['app_key'], 'client_secret': settings.OAUTH['facebook']['app_secret'] } request = httplib2.Http() response, content = request.request( "https://graph.facebook.com/oauth/access_token?" + urllib.urlencode(args)) if response['status'] != 200: raise GraphAPIError(content["error_code"], content["error_msg"]) result = content.split("=")[1] return result
def __init__(self, access_token=None): from mapsServices.places.GPRequest import Client mem = Client() self.req = httplib2.Http(cache=mem) self.access_token = access_token