def googlesignin():
auth_code = Utils.getParam(request.form, 'data', '')
if not auth_code:
return ''
client_secret_file = '/etc/ostrich_conf/google_client_secret.json'
credentials = client.credentials_from_clientsecrets_and_code(
client_secret_file,
['profile', 'email'],
auth_code)
http_auth = credentials.authorize(httplib2.Http())
users_service = discovery.build('oauth2', 'v2', http=http_auth)
user_document = users_service.userinfo().get().execute()
#TODO check consistencies b/w session and user cache
#from app import cache
#cache_key = credentials.id_token['sub']
#user = cache.get(cache_key)
user = session.get('_user', None)
if not user:
user_data = {
'username': user_document['email'],
'name': user_document['name'],
'email': user_document['email'],
'google_id': credentials.id_token['sub'],
'picture': user_document['picture'],
'source': 'web'
}
user = User.createUser(user_data)
WebUtils.storeUserSession(user, client=Utils.getParam(request.form, 'client', default=None))
user = session['_user']
visible_user_data = {'user': user}
return jsonify(data=visible_user_data)
评论列表
文章目录