def api_login(): """ This endpoint receives a POST request from client-side login It performs validation of the returned token, creates a new account if needed, and logs the user in """ # request.json.keys() --> [u'expiresIn', u'userID', u'signedRequest', u'accessToken'] user_id = request.json['userID'] provider = 'facebook' app.logger.debug('Received signed request from user %s' % user_id) parsed_request = parse_signed_request(request.json['signedRequest'], app.config['FB_APP_SECRET']) if parsed_request: # The request was good, is this a new user? try: user = User.objects.get(id=user_id) new_user = False signal = user_logged_in except DoesNotExist: # Create an account for the user user = User(id=user_id) new_user = True signal = user_created # Save the access token token = AccessToken( provider=provider, access_token=request.json['accessToken'], ) user.access_tokens.append(token) user.save() # Log the user in login_user(user) # Run the signal handler. If new user, this will pull their profile signal.send(current_app._get_current_object(), user_id=user_id, provider=provider) # Return success return Response(json.dumps({'new_user': new_user}), status=201, mimetype='application/json') else: # The request failed to validate: log an error and return http 400 app.logger.warning('Signed request failed to validate, user %s' % user_id) return Response(json.dumps({ 'status': 'error', 'message': 'Signed request failed to authenticate' }), status=400, mimetype='application/json')
def get_friend_ids_in_app(self): # Need to return `friends` that have a User document friend_ids = self.get_matching_friends().scalar('uid') # User models having those ids return User.objects(id__in=friend_ids).sclar('id')
from monkeybook.tasks import RunFqlTask from monkeybook.models import User from monkeybook.fql.profile import ProfileFieldsTask, FamilyTask, SquareProfilePicTask u = User.objects()[0] rft = RunFqlTask()