Skip to content

Instantly share code, notes, and snippets.

@psawaya
Created July 23, 2011 02:26
Show Gist options
  • Save psawaya/1100881 to your computer and use it in GitHub Desktop.
Save psawaya/1100881 to your computer and use it in GitHub Desktop.
from slingshot_config import *
import httplib
import urllib
import simplejson
class FBInterface(object):
def __init__(self,logger=None,access_token=""):
self.access_token = access_token
self.logger = logger
@classmethod
def call(cls,fb_token,method,logger=None):
urlToCall = "https://graph.facebook.com/%s?access_token=%s" % (method,fb_token)
fbResponse = urllib.urlopen(urlToCall)
fbResponseData = simplejson.loads(fbResponse.read())
if logger is not None:
logger.debug(urlToCall)
logger.debug(str(fbResponseData))
fbResponse.close()
return fbResponseData
def getAccessToken(self,access_code="",logger=None,redirect_uri=None):
if access_code == "" or (self.access_token is not None and self.access_token != ''):
return self.access_token
requestDomain = "graph.facebook.com"
requestPath = "oauth/access_token"
POSTargs = {
"client_id" : FB_APP_ID,
"redirect_uri" : SLINGSHOT_URL + '/fromfb/',
"client_secret" : FB_APP_SECRET,
"code" : access_code
}
if redirect_uri is not None:
POSTargs['redirect_uri'] = redirect_uri
encodedArgs = urllib.urlencode(POSTargs)
fbURLTarget = "https://%s/%s?%s" % (requestDomain,requestPath,encodedArgs)
print fbURLTarget
fbResponse = urllib.urlopen(fbURLTarget)
fbResponseData = fbResponse.read()
try:
if logger is not None:
logger.debug(fbResponseData)
self.access_token = fbResponseData.split('=')[1]
if self.logger is not None:
self.logger.debug("access_token: %s" % self.access_token)
return self.access_token
# result = simplejson.loads(fbResponse.read())
finally:
fbResponse.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment