Задать вопрос

Как реализовывать запросы VK API через Python без токена?

У меня есть это: https://habrahabr.ru/sandbox/84639/
Там запрос делается через vkapi.method, а мне нужно реализовывать token-free запросы без авторизации. Как это сделать? Пытался просто import vk, vk.method - не работает.

Вот что приходится делать сейчас:
import urllib2, json, os.path

DIR = os.path.abspath(os.curdir) + '/'

def get(url, timeout=10):
	try:
		res = urllib2.urlopen(url, timeout=timeout).read()
	except:
		print 'get error'
		res = 0
	return res

def json_convert(string):
	return json.loads(string)

def groups_getById(group_ids=None, group_id=None, fields=None):
	url = 'https://api.vk.com/method/groups.getById?group_ids=' + str(group_ids) + '&group_id=' + str(group_id) + '&fields=' + str(fields)
	return json_convert(get(url))

def groups_getMembers(group_id=None, sort=None, offset=None, count=None, fields=None, filter=None):
	url = 'https://api.vk.com/method/groups.getById?&group_id=' + str(group_id) + '&sort=' + str(sort) + '&offset=' + str(offset) + '&count=' + str(count) + '&fields=' + str(fields) + '&filter=' + str(filter)
	return json_convert(get(url))
  • Вопрос задан
  • 8056 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
berezuev
@berezuev
#define TRUE FALSE
Закройте статью, прикрепленную к вопросу, и никогда ее не читайте.
Поставьте библиотеку Requests, и через нее уже делайте запросы.
Список методов есть на vk.com/dev/methods
Ответ написан
@prawn-cake
Привет.
Рекомендую использовать библиотеку https://github.com/prawn-cake/vk-requests
import vk_requests

api = vk_requests.create_api()
api.users.get(user_ids=1)
[{'first_name': 'Pavel', 'last_name': 'Durov', 'id': 1}]


Но вообще лучше использовать token-based аутентификацию, т.к token-free api сильно ограничено
Ответ написан
Комментировать
@FireGM
import urllib
import urllib2, json, os.path

class Api():
    main_url = 'https://api.vk.com/method/'

    def method(self, method, params=None):
        if not params:
            params = {}
        full_url = self.generate_url(method, params)
        return urllib2.urlopen(full_url, timeout=timeout).read()

    def generate_url(self, method, params):
        m = self.main_url + method + "?" +urllib.urlencode(params)
        return m


api = Api()
res = api.method('users.get', {"user_ids" : 1, 'fields': "photo_50,city,verified"})
Ответ написан
Taras_Serevann
@Taras_Serevann
веб-разработчик, автор
Может, стоит попытаться совершать запросы напрямую. Вы ведь осилите работу с сетью и парсинг JSON? Уверен, для этого полно готовых высокоуровенвых решений.
Ответ написан
@ilyakmet Автор вопроса
Нашел вот это: Vk api python без acess_token? Но может есть вариант? Не хочется все функции писать заново на python через urllib.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы