Skip to content

Commit 6dfd84b

Browse files
committed
Merge branch 'dev'
2 parents cbd7fc8 + ceda176 commit 6dfd84b

4 files changed

Lines changed: 35 additions & 10 deletions

File tree

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
setup(
1616
name='vk_api',
17-
version='6.3',
17+
version='6.4',
1818
author='Kirill Python',
1919
author_email='python273@ya.ru',
2020
url='https://github.com/python273/vk_api',

vk_api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"""
1010

1111
__author__ = 'Kirill Python'
12-
__version__ = '6.3'
12+
__version__ = '6.4'
1313
__email__ = 'python273@ya.ru'
1414
__contact__ = 'https://vk.com/python273'
1515

vk_api/vk_api.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class VkApi(object):
3434
def __init__(self, login=None, password=None, number=None, sec_number=None,
3535
token=None,
3636
proxies=None, captcha_handler=None, config_filename='vk_config.json',
37-
api_version='5.33', app_id=2895443, scope=2097151):
37+
api_version='5.33', app_id=2895443, scope=2097151,
38+
client_secret=None):
3839
"""
3940
:param login: Логин ВКонтакте
4041
:param password: Пароль ВКонтакте
@@ -55,6 +56,8 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
5556
:param api_version: Версия API (default: '5.33')
5657
:param app_id: Standalone-приложение (default: 2895443)
5758
:param scope: Запрашиваемые права (default: 2097151)
59+
:param client_secret: Защищенный ключ приложения для серверной
60+
авторизации (https://vk.com/dev/auth_server)
5861
"""
5962

6063
self.login = login
@@ -68,6 +71,7 @@ def __init__(self, login=None, password=None, number=None, sec_number=None,
6871
self.api_version = api_version
6972
self.app_id = app_id
7073
self.scope = scope
74+
self.client_secret = client_secret
7175

7276
self.settings = jconfig.Config(login, filename=config_filename)
7377

@@ -221,6 +225,9 @@ def check_sid(self):
221225
def api_login(self):
222226
""" Получение токена через Desktop приложение """
223227

228+
if not self.sid:
229+
raise AuthorizationError('API authorization error (no sid cookie)')
230+
224231
url = 'https://oauth.vk.com/authorize'
225232
values = {
226233
'client_id': self.app_id,
@@ -250,12 +257,29 @@ def api_login(self):
250257
else:
251258
raise AuthorizationError('Authorization error (api)')
252259

260+
def server_auth(self):
261+
""" Серверная авторизация """
262+
values = {
263+
'client_id': self.app_id,
264+
'client_secret': self.client_secret,
265+
'v': self.api_version,
266+
'grant_type': 'client_credentials'
267+
}
268+
269+
response = self.http.post(
270+
'https://oauth.vk.com/access_token', values).json()
271+
272+
if 'error' in response:
273+
raise AuthorizationError(response['error_description'])
274+
else:
275+
self.token = response
276+
253277
def check_token(self):
254278
""" Проверка access_token на валидность """
255279

256280
if self.token:
257281
try:
258-
self.method('isAppUser')
282+
self.method('stats.trackVisitor')
259283
except ApiError:
260284
return False
261285

vk_api/vk_tools.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def __init__(self, vk):
2525
self.vk = vk
2626

2727
def get_all(self, method, max_count, values=None, key='items',
28-
limit_count=None):
28+
limit=None):
2929
""" Получить все элементы
3030
Работает в методах, где в ответе есть count и items или users
3131
За один запрос получает max_count * 25 элементов
@@ -35,7 +35,7 @@ def get_all(self, method, max_count, values=None, key='items',
3535
:param max_count: максимальное количество элементов,
3636
которое можно получить за один раз
3737
:param key: ключ элементов, которые нужно получить
38-
:param limit_count: ограничение на кол-во получаемых элементов,
38+
:param limit: ограничение на кол-во получаемых элементов,
3939
но может прийти больше
4040
"""
4141

@@ -48,9 +48,10 @@ def get_all(self, method, max_count, values=None, key='items',
4848
offset = 0
4949

5050
while True:
51-
run_code = code_get_all_items % (max_count, offset, key,
52-
json.dumps(values),
53-
method, method)
51+
run_code = code_get_all_items % (
52+
max_count, offset, key, json.dumps(values, ensure_ascii=False),
53+
method, method
54+
)
5455

5556
response = self.vk.method('execute', {'code': run_code})
5657

@@ -59,7 +60,7 @@ def get_all(self, method, max_count, values=None, key='items',
5960
if response['offset'] >= response['count']:
6061
break
6162

62-
if limit_count and len(items) >= limit_count:
63+
if limit and len(items) >= limit:
6364
break
6465

6566
offset = response['offset']

0 commit comments

Comments
 (0)