Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 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