From d018c440f65f189425e195e3f3e90fc6c01f0d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Cort=C3=A9z?= Date: Sun, 14 Feb 2016 18:46:23 -0600 Subject: [PATCH] Renew automatically access token if it has expired --- src/controller/mainController.py | 2 +- src/sessionmanager/session.py | 16 +++++++--------- src/sessionmanager/vkSessionHandler.py | 3 ++- src/vk/api.py | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/controller/mainController.py b/src/controller/mainController.py index a0010e1..9748d95 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -42,7 +42,7 @@ class Controller(object): def login(self): self.window.change_status(_(u"Logging in VK")) - self.session.authorise() + self.session.login() self.window.change_status(_(u"Ready")) for i in self.buffers: if hasattr(i, "get_items"): diff --git a/src/sessionmanager/session.py b/src/sessionmanager/session.py index eef14bc..51c932b 100644 --- a/src/sessionmanager/session.py +++ b/src/sessionmanager/session.py @@ -136,19 +136,18 @@ class vkSession(object): if the user account isn't authorised, it needs to call self.authorise() before login.""" if self.settings["vk"]["token"] != None: - self.vk.login_access_token(self.settings["vk"]["token"]) + result = self.vk.login_access_token(self.settings["vk"]["token"]) self.logged = True log.debug("Logged.") + if result == False: + self.authorise() else: - self.logged = False - raise Exceptions.RequireCredentialsSessionError + self.authorise() def authorise(self): - if self.logged == True: - raise Exceptions.AlreadyAuthorisedError("The authorisation process is not needed at this time.") - else: - self.vk.login(self.settings["vk"]["user"], self.settings["vk"]["password"]) - self.settings["vk"]["token"] = self.vk.client._session.access_token + self.vk.login(self.settings["vk"]["user"], self.settings["vk"]["password"]) + self.settings["vk"]["token"] = self.vk.client._session.access_token + self.settings.write() def post_wall_status(self, message, *args, **kwargs): response = self.vk.client.wall.post(message=message, *args, **kwargs) @@ -218,7 +217,6 @@ class vkSession(object): def get_users(self, user_ids=None, group_ids=None): time.sleep(1) - print len(user_ids.split(",")) if user_ids != None: u = self.vk.client.users.get(user_ids=user_ids, fields="uid, first_name, last_name") for i in u: diff --git a/src/sessionmanager/vkSessionHandler.py b/src/sessionmanager/vkSessionHandler.py index 530684a..d7148b9 100644 --- a/src/sessionmanager/vkSessionHandler.py +++ b/src/sessionmanager/vkSessionHandler.py @@ -14,4 +14,5 @@ class vkObject(object): def login_access_token(self, token): s = Session(access_token=token) - self.client = API(s) \ No newline at end of file + self.client = API(s) + return self.client.account.getProfileInfo() \ No newline at end of file diff --git a/src/vk/api.py b/src/vk/api.py index 9422ef9..3fd9ef2 100644 --- a/src/vk/api.py +++ b/src/vk/api.py @@ -93,7 +93,7 @@ class Session(object): if AUTHORIZATION_FAILED in error_codes: # invalid access token logger.info('Authorization failed. Access token will be dropped') self.access_token = None - return self.make_request(method_request) + return False else: raise VkAPIMethodError(errors[0])