Exemple #1
0
def get_current_user(request):
    user_id = parse_cookie(request.cookies.get("google_user"))
    
    if user_id:
        logging.error("USER ID COOKIE DETECTED")
#        logging.error('::get_current_user:: returning user' + user_id)
        return User.query(User.google_id==user_id).get()
Exemple #2
0
    def get (self):
        logging.error('CALLBACK')
        error = self.request.get('error')

        if error:
             logging.error(error)
             self.abort(404)
             
        code = self.request.get('code')
       # auth_config_file=open(CLIENT_SECRETS)
       # auth_config = json.load(auth_config_file)
       # auth_config_file.close()
        #client_id, client_secret, scope = auth_config['google_web']['client_id'],auth_config['google_web']['client_secret'], auth_config['google_web']['scope']
        #access_token_url= auth_config['google_web']['token_uri']

        payload = {
          'code': self.request.get('code'),
          'client_id': config.GOOGLE_CLIENT_ID,
          'client_secret': secrets.GOOGLE_CLIENT_SECRET,
          'redirect_uri': self.redirect_url,
          'grant_type': 'authorization_code'
        }
# get access token from the request token
#        logging.error('uri for'+self.uri_for('ciao', _full=True))
        resp = urlfetch.fetch(
            url=config.GOOGLE_TOKEN_URI,
            payload=urlencode(payload),
            method=urlfetch.POST,
            headers={'Content-Type': 'application/x-www-form-urlencoded'}
        )
# get user data using access token

        auth_info=json.loads(resp.content)
        logging.error('auth_info')
        logging.error(auth_info)
        url='https://www.googleapis.com/oauth2/v3/userinfo?{0}'
        target_url = url.format(urlencode({'access_token':auth_info['access_token']}))
        resp=urlfetch.fetch(target_url).content
        user_data = json.loads(resp)
        if 'id' not in user_data and 'sub' in user_data:
            user_data['id'] = user_data['sub']
        logging.error("callback:USER data")
        logging.error(user_data)

        user= User.query(User.google_id==user_data['id']).fetch(1)
        
        logging.error("callback:USER from query")
        logging.error(user)
        
        if not user:
            logging.error("ADDING NEW USER")
            
            user = User(
                    #key_name=str(user_data["id"]),
                    google_id=str(user_data["id"]),
                    id=str(user_data["id"]),
                    full_name=user_data["name"],
                    google_access_token=auth_info['access_token'],
                    email=user_data['email'],
                    first_name= user_data['given_name'],
                    last_name= user_data['family_name'],
                    picture=user_data["picture"],
                    google_locale = user_data["locale"],
                    locale=user_data["locale"]
                    )
            user.put()

        set_cookie(self.response, "google_user", str(user_data["id"]), expires=time.time() + config.COOKIE_DURATION, encrypt=True)


        self.redirect('/')