Esempio n. 1
0
def get_token():
    print "get_token\n"
#    print "Args:" , request.args    
    if 'RUN_LOCALLY_OUTSIDE_HEROKU' in os.environ:
        return fbapi_auth("1234")[0]    
    if request.args.get('code', None):
        return fbapi_auth(facebook_request.args.get('code'))[0]
    cookie_key = 'fbsr_{0}'.format(FB_APP_ID)
    if cookie_key in request.cookies:
        c = request.cookies.get(cookie_key)
        encoded_data = c.split('.', 2)
        sig = encoded_data[0]
        data = json.loads(urlsafe_b64decode(str(encoded_data[1]) +
            (64-len(encoded_data[1])%64)*"="))
        if not data['algorithm'].upper() == 'HMAC-SHA256':
            raise ValueError('unknown algorithm {0}'.format(data['algorithm']))
        h = hmac.new(FB_APP_SECRET, digestmod=hashlib.sha256)
        h.update(encoded_data[1])
        expected_sig = urlsafe_b64encode(h.digest()).replace('=', '')
        if sig != expected_sig:
            raise ValueError('bad signature')
        code =  data['code']
        params = {
            'client_id': FB_APP_ID,
            'client_secret': FB_APP_SECRET,
            'redirect_uri': '',
            'code': data['code']
        }
        from urlparse import parse_qs
        r = facebook_request.get( graph_server + '/oauth/access_token', params=params)
        token = parse_qs(r.content).get('access_token')
        return token
Esempio n. 2
0
def fb_call(call, args=None):
    print "fb_call: %s\n" % call
    url = graph_server + "/{0}".format(call)
    r = facebook_request.get(url, params=args)
    content = r.content
#    print "got content  :" + content
    return json.loads(content)
Esempio n. 3
0
def fql(fql, token, args=None):
    print "fql: %s\n" % fql
    if not args:
        args = {}
    args["query"], args["format"], args["access_token"] = fql, "json", token
    url = api_facebook_server + "/method/fql.query"
    r = facebook_request.get(url, params=args)
    return json.loads(r.content)
Esempio n. 4
0
def fbapi_get_string(path,
                     params=None, 
                     access_token=None,
                     encode_func=urllib.urlencode):
    print "fbapi_get_string: %s\n" % path
    """Make an API call"""
    if not params:
        params = {}
    params[u'method'] = u'GET'
    if access_token:
        params[u'access_token'] = access_token
    for k, v in params.iteritems():
        if hasattr(v, 'encode'):
            params[k] = v.encode('utf-8')
    url =  facebook_server + path
    params_encoded = encode_func(params)
    url = url + params_encoded
    result = facebook_request.get(url).content
    return result
Esempio n. 5
0
def get_location_latlon(id):
    url = "%s/%d" % (graph_server,id)
    content=facebook_request.get(url ).content
    print content
    location = json.loads(content)    
    return location
Esempio n. 6
0
import os.path
import urllib
import hmac
import json
import hashlib
import urlparse
from base64 import urlsafe_b64decode, urlsafe_b64encode


on_heroku = True

#if you want to run locally export RUN_LOCALLY_OUTSIDE_HEROKU=1

if 'RUN_LOCALLY_OUTSIDE_HEROKU' in os.environ:
    import MyRequests as facebook_request
    graph_server= facebook_request.graph_server() 
    facebook_server= facebook_request.facebook_server() 
    api_facebook_server = facebook_request.facebook_api_server() 

else:
    print "running on facebook"
    import requests
    import requests as facebook_request
    graph_server= "https://graph.facebook.com"
    facebook_server= "https://www.facebook.com"
    api_facebook_server = "https://api.facebook.com"
    on_heroku = False



from flask import Flask, request, redirect, render_template, url_for