Facebook Login Auhtentication Sample Python Code (Handling Proxy Server)


Facebook Login Auhtentication:

clientid = settings.SOCIAL_AUTH_CREDENTIALS['facebook']['client_id']
client_secret = settings.SOCIAL_AUTH_CREDENTIALS['facebook']['client_secret']
redirect_uri = settings.SOCIAL_AUTH_CREDENTIALS['facebook']['redirect_uri']

scope = ['email','publish_stream']

def login(request):
    statekey = str(uuid.uuid1())
    request.session['facebookstatekey'] = statekey
    url = 'https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s&scope=%s&state=%s' % (clientid,redirect_uri,','.join(scope),statekey)
    return HttpResponseRedirect(url)

def callback(request):
    code = request.GET.get('code','')
    statekey = request.GET.get('state','')
    if len(code) > 0 and statekey == request.session.get('facebookstatekey',''):
        url = 'https://graph.facebook.com/oauth/access_token'
        values = {'code' : code,
                  'client_id' : clientid,
                  'client_secret' : client_secret,
                  'redirect_uri': redirect_uri}
        
        # proxy handling. Not required on main server
        useproxy = getattr(settings, "PROXY_ENABLED", False)
        if useproxy:
            passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
            passmgr.add_password(None, settings.PROXY_SERVER, settings.PROXY_USER, settings.PROXY_PASSWORD)
            authinfo = urllib2.ProxyBasicAuthHandler(passmgr)
            proxy_support = urllib2.ProxyHandler({"http" : settings.PROXY_SERVER})
            opener = urllib2.build_opener(proxy_support, authinfo)
            urllib2.install_opener(opener)
        
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        the_page = response.read()
        
        fb_cred = {}
        
        pagekeys = the_page.split('&')
        for itm in pagekeys:
            itemval = itm.split('=')
            fb_cred[itemval[0]] = itemval[1]
        
        fb_access_token = fb_cred['access_token']
        fb_expires = fb_cred['expires']
        
        url = 'https://graph.facebook.com/me?access_token=%s' % fb_access_token
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        the_page = response.read()
        
        user_info = json.loads(the_page)
        
        print user_info
.
.
.
.
.
.
.
.
.
.

written by, Thanga Vignesh Raja T

Comments