Skip to content

Commit 7616ad7

Browse files
committed
Implement device remembering for two-factor authentication
1 parent 6a0bee4 commit 7616ad7

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

vk_api/vk_api.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
5656
{'http': 'http://127.0.0.1:8888/',
5757
'https': 'https://127.0.0.1:8888/'}
5858
:param auth_handler: Функция для обработки двухфакторной аутентификации,
59-
обязана возвращать строку с кодом для
60-
прохождения аутентификации
59+
обязана возвращать строку с кодом и булевое значение,
60+
означающее, стоит ли вк запомнить это устройство, для
61+
прохождения аутентификации.
6162
:param captcha_handler: Функция для обработки капчи
6263
:param config_filename: Расположение config файла
6364
@@ -148,8 +149,8 @@ def vk_login(self, captcha_sid=None, captcha_key=None):
148149
remixsid = None
149150

150151
if 'act=authcheck' in response.url:
151-
code = self.error_handlers[TWOFACTOR_CODE]()
152-
response = self.twofactor(response, code)
152+
code, remember_device = self.error_handlers[TWOFACTOR_CODE]()
153+
response = self.twofactor(response, code, remember_device)
153154

154155
if 'remixsid' in self.http.cookies:
155156
remixsid = self.http.cookies['remixsid']
@@ -188,10 +189,13 @@ def vk_login(self, captcha_sid=None, captcha_key=None):
188189
if 'act=blocked' in response.url:
189190
raise AccountBlocked('Account is blocked')
190191

191-
def twofactor(self, response, code):
192+
def twofactor(self, response, code, remember_device=False):
192193
""" Двухфакторная аутентификация
193194
:param reponse: запрос, содержащий страницу с приглашением к аутентификации
194195
:param code: код, который необходимо ввести для успешной аутентификации
196+
:param remember_device: параметр, означающий,
197+
стоит ли запоминать это устройство в целях
198+
избежания повторного ввода кода(default: False)
195199
"""
196200

197201
if code == None:
@@ -205,7 +209,7 @@ def twofactor(self, response, code):
205209
values = {
206210
'act': 'a_authcheck_code',
207211
'code': code,
208-
'remember': 0, # TODO: Fix me(device remembering)
212+
'remember': int(remember_device),
209213
'hash': auth_hash,
210214
}
211215
response = self.http.post(url, values, cookies=response.cookies)

0 commit comments

Comments
 (0)