Google Login Auhtentication Sample Python Code (Handling Proxy Server)



Google Login Auhtentication

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

scope = ['https://www.googleapis.com/auth/userinfo.profile', #profile
         'https://www.googleapis.com/auth/userinfo.email', #email address
         #'https://www.google.com/m8/feeds/', #contacts
         ]

def login(request):
    url = 'https://accounts.google.com/o/oauth2/auth?client_id=%s&redirect_uri=%s&response_type=code&scope=%s&access_type=offline' % (clientid,redirect_uri,' '.join(scope))
    return HttpResponseRedirect(url)

def callback(request):
    code = request.GET.get('code','')
    if len(code) > 0:
        url = 'https://accounts.google.com/o/oauth2/token'
        values = {'code' : code,
                  'client_id' : clientid,
                  'client_secret' : client_secret,
                  'redirect_uri': redirect_uri,
                  'grant_type': 'authorization_code'}
        
        # 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()
        
        access_info = json.loads(the_page)
        google_access_token = access_info['access_token']
        google_id_token = access_info['id_token']
        google_token_type = access_info['token_type']
        
        url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=%s' % google_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

Popular Posts