def login(self, force_login=False, app_refresh_interval=3600): if self.account is None: raise Exception("User does not exist ! Invalid username !") # if the user is logged in already then use the login cookie to authenticate if self.account.get('is_logged_in'): cookies = requests.utils.cookiejar_from_dict( json.loads(self.account.get('cookie'))) self.session.cookies = cookies # check if the user is already logged in or is the login session expired if not self.account.get('is_logged_in') or force_login: self.pre_login_flow() data = dict() data['jazoest'] = self.account.get('jazoest') data['country_codes'] = [{ "country_code": "1", "source": ["default"] }] data['enc_password'] = Signature.get_enc_password( self.account['password'], self.public_key_id, self.public_key) data['_csrftoken'] = self.session.get_csrftoken() data['username'] = self.account.get('username') data['adid'] = self.device.get('uuid') data['guid'] = self.device.get('uuid') data['device_id'] = self.device.get('android_device_id') data['google_tokens'] = '[]' data['password'] = self.account.get('password') data['login_attempt_count'] = '0' if self.request.send_request(endpoint="accounts/login/", post=data, account=self.account, device=self.device, session=self.session): user_id = self.request.last_json['logged_in_user']['pk'] update_user_id(self.account.get('id'), user_id) # SET USER ID IN DATABASE update_token( self.account.get('id'), self.request.last_response.cookies.get_dict().get( 'csrftoken')) update_cookie( self.account.get('id'), json.dumps(self.request.last_response.cookies.get_dict())) self.login_flow(just_logged_in=True) return True else: return self.login_flow(False)