Что необходимо для доступа к методам api vk

Социальные сети уже давно стали частью нашей жизни. Практически у каждого пользователя есть персональная страничка в таких сервисах как вконтакте, фейсбук, твиттер и другие. И поскольку такие сервисы очень популярны в наше время, они сделали специальное API. При помощи методов которые предоставляет API конкретной системы, вы можете получить список пользователей, список фотографий, даже найти всех пользователей в определенной области на карте, список действий очень большой.

Однако, не каждый пользователь может получить доступ к этим данным. Большинство сервисов требуют регистрации и создания специального приложение, которое и будет работать с методами определенного сервиса.

Итак, сегодня мы рассмотрим пример работы с VK API, в котором будем получать список пользователей c именем «Маша» в городе «Москва». Будем искать Маш в Москве.:)

Первым делом нам нужно создать приложение. Для создания приложения переходим по ссылке(https://new.vk.com/dev -> Создать приложение).

Vkontakte API Python | Как работать с методами?

Вводим название и поскольку мы разбираем пример на PHP используя веб-сервер, выбираем тип приложения — «Веб-сайт«. Указываем адрес вашего сайта и базовый домен(если делаете на локальном веб-сервере, пишем http://localhost). Нажимаем кнопку «Подключить сайт» и ваше приложение создано, часть пути пройдена.

Приступаем к программированию. Существует множество классов для работы с API сайтов, однако мы будем писать все сами, чтобы понять основные принципы работы.

Для получения доступа к методам API, нужно выполнить несколько шагов:

  1. Авторизировать пользователя;
  2. Получить ключ доступа;
  3. Получить access_token;
  4. Выполнить запрос к методу;

4 простых шага, но на деле немного сложнее.

Авторизируем пользователя:

session_start(); $client_id = ‘1234567’; $redirect_uri = ‘http://localhost’; $display = ‘page’; $scope = ‘friends,groups’; $response_type = ‘code’; $auth_uri = «https://oauth.vk.com/authorize?client_id= redirect_uri=response_type=;

Разбираем по пунктам, что же тут написано:

  • $client_id — идентификатор вашего приложения, присвоенный системой;
  • $redirect_uri — страница на которую будет перенаправлен пользователь после успешной авторизации;
  • $display — как отображается страница входа, в данном случае это будет отдельная страница;
  • $scope — разрешения для приложения, указывать через запятую. Полный список тут;
  • $response_type — тип ответа, в данном случае будет предоставлен JSON;
  • $auth_uri — формируем строку для авторизации пользователя, передвая нужные параметры;

С авторизацией пользователя разобрались, теперь нужно получить acces_token. После успешной авторизации нам в get запросе передают специальный код, с помощью которого мы сможем получить токен.

Получаем access_token:

if(isset($_GET[‘code’])) < $code = $_GET[‘code’]; $client_secret = ‘you_application_password’; $acces_uri = «https://oauth.vk.com/access_token»; $fields = array( ‘client_id’ =>$client_id, ‘client_secret’ => $client_secret, ‘redirect_uri’ => $redirect_uri, ‘code’ => $code ); $acces_uri .= «?client_id=; $acces_uri .= «client_secret=; $acces_uri .= «redirect_uri=; $acces_uri .= «code=»; $res = file_get_contents($acces_uri); $response_string = json_decode($res,true); $_SESSION[‘token’] = $response_string[‘access_token’];

Тут все довольно просто, записываем полученный код в переменную $code , формируем ссылку с нужными нам данными — $access_uri . Далее при помощи функции file_get_contents выполняем запрос и в ответ получаем JSON объект который сразу же декодируем в массив. В конце просто полученный токен записываем в переменную сессии. Не очень хороший подход, лучше сразу писать в базу данных, однако цель этого руководства не в этом.

Еще по теме:  Шаги Вконтакте что это

VK API #1 Receiving access token (standalone app)

$client_secret — «Защищенный ключ» вашего приложения, без него работать не будет

Вот теперь у нас уже все готово для того, чтобы получить список пользователей с определенного города. Алгоритм работы очень простой: сформировать запрос, выполнить, получить данные.

if (isset($_SESSION[‘token’])) < $name = ‘Маша’; $url = $url = «https://api.vk.com/method/users.search?city_id=1count=1000; $res = file_get_contents($url); $users_data = json_decode($res,true); $users_count = array_shift($users_data[‘response’]); $users_list = $users_data[‘response’]; >

И не забываем отобразить ссылку для авторизации которая у нас сформирована и записана в переменную $auth_uri .

Данный запрос вернет нам 1000 пользователей с Москвы. На выходе мы получим количество затронутых записей и ассоциативный массив с пользователями записанный в переменную $users_list , который уже можем использовать на свое усмотрение.

Единственный нюанс в том, что API не позволяет выбрать большее количество пользователей, даже если использовать параметр offset в строке запроса. К сожалению такое ограничение в VK API.

Полный список параметров VK API для запроса можете посмотреть в документации.

Надеюсь статья была вам полезна и вы узнали что-то новое для себя, если же нет, оставляйте пожалуйста ваши комментарии.

В следующей статье разберем реальный пример в котором будут реализованы некоторые функции управления сообществом, а именно постинг записей по расписанию, удаление и т.д.

Источник: adminnotes.info

Алгоритм обращения программы к API VKontakte

Часто бывает мы хотим автоматизировать то или иное действие. Порой спешка или просто лень не дает нам возможности ознакомиться со всей документацией(по API VK).
Разработать программу для работы с API ВКонтакте проще чем кажется. Подойдет любой язык, умеющий отправлять http get запросы (соответственно получать ответ). Например: Delphi, shell, C, Perl, PHP, Python и т. п.
image

Итак, разберем алгоритм создания программы и интеграции её с ВКонтакте.
Первое что нам нужно сделать, это создать(зарегистрировать) Desktop-приложение.
Нажимаем на кнопку «Подключить сайт» в разделе «Разработчикам»
Вводим название и выбираем тип — Standalone-приложение.
image

image

После чего, на ваш мобильный телефон (привязанный к аккуанту) придет код, который необходимо ввести в проверочное поле.
Создается приложение, в настройках нам потребуется ID приложения.

  • Открытие окна браузера для аутентификации пользователя на сайте Вконтакте.
  • Пользователь разрешает доступ приложению к запрашиваемым правам.
  • Вконтакте возвращает приложению access_token для доступа к API.

image

_http://api.vk.com/oauth/authorize?client_id=##ID##scope=##ПРАВА##response_type=token
, где:
##ID##- Id вашего приложения, полученного ранее;
##ОТОБРАЖЕНИЕ## — внешний вид окна авторизации(page, popup, touch и wap).
##ПРАВА##- список прав доступа приложения к данным пользователя. Указываются через запятую(notify,friends,photos,audio,video,docs,notes,pages,wall,groups,messages,ads) либо в цифровом виде, суммируя необходимые права (1,2,4,8,16,32,64. 262144).
Пример: Получить права на Доступ к друзьям и Доступ к фотографиям пользователя:
2 + 4 = 6; scope=1026 либо scope=friends,photos
Подробнее о правах доступа можно почитать здесь и здесь.

В ответ на запрос, сервер вернет:

access_token=93f22a20ddf1174f939108d43e936cd6bb193469344639c2d1c268f3f65fa86 user_id=11347652
, где access_token — необходимый нам параметр, для отправки последующий запросов к API Вконтакте;
expires_in — время жизни token, после истечения необходимо обновить
( UPD: если в правах указать «offline» или 999999, то токен будет бесконечным);
user_id — id пользователя.
Связь программа-приложение-пользователь установлена. Теперь мы можем отправлять любые запросы к Api(в мерах разрешенных пользователем).
Синтаксис запросов:

_https://api.vkontakte.ru/method/##МЕТОД##?##НАЗВАНИЕ_ПЕРЕМЕННОЙ##=##ЗНАЧЕНИЕ_ПЕРЕМЕННОЙ##
//запишем токен, полученный ранее
$day = ’15’;
$month = ’11’;
//Дата, до которой будем отсчитывать время
$year = ‘2011’;
function dateDiff($startDay, $endDay) $endDay = strtotime($endDay);
$startDay= strtotime($startDay);

Еще по теме:  Сделать фотостатусы для Вконтакте

$difference = abs($endDay — $startDay);
$return[‘days’] = floor($difference / 86400);
$return[‘hours’] = floor($difference / 3600) % 24;
$return[‘minutes’] = floor($difference / 60) % 60;

$date=dateDiff(date(«j-n-Y G:i»),’19-11-2011 9:00′);

$phrases = «/var/www/public/1.txt»;//файл содержащий фразы
$z = file ($phrases);
$cz = count ($z) -1;
$r = rand (0, $cz);
//случайная фраза из файла

$text=»Осталось $date[days] дней, $date[hours] часов.$z[$r]»;

$sRequest = «https://api.vkontakte.ru/method/status.set?text=$text;
echo $text;
// ответ от Вконтакте
$oResponce = json_decode(file_get_contents($sRequest));

image

Теперь добавляем pub.php в cron с обновлением, не чаще чем раз в минуту, и наблюдаем результат.

image

Таким способом можно автоматически публиковать статьи, фотографии, видео, отправлять сообщения и много других интересных вещей.
Экспериментируйте! Благодарю за внимание.

UPD: перед отправкой текстовую строку необходимо кодировать $text=urlencode($text);

Источник: habr.com

Сайт на Laravel. Урок 6. Vk API

Привет! Мы написали первый контроллер и маршрут для него. Теперь сделаем этот контроллер немного полезнее для нас. Используем официальный Vk API, чтобы получить информацию о подписчиках нашего сообщества и использовать эту информацию для нашего проекта.

VK API

Сначала разберемся, что такое API. Расшифровывается это как программный интерфейс приложения или интерфейс прикладного программирования (англ. application programming interface) Подробно можно прочитать в википедии.

В нашем случае Api можно понять как способ получить нужные данные от другого сайта или приложения. Например, мы хотим получать информацию о подписчиках сообщества каждую минуту и использовать в логике нашего сервиса. Мы бы могли написать парсер для группы в вк. И заходить на страницу как обычный пользователь, искать нужную информацию и копировать ее.

Мы бы так и сделали, если бы у вк не было более удобного апи. Однако, такой подход имеет много недостатков. Если верстка страницы изменится, то парсер придется переписывать. Вместе с нужной информацией нам придется обработать очень много лишнего. Из-за этого возрастает количество памяти в приложении и время обработки.

Да и сам вконтакте был бы против использования парсеров.

Поэтому они сами подготовили способ получить нужную информацию в удобном формате. Так называемый API. Для разработчиков даже есть подробная документация. Доступная на страницах знакомства и списка методов.

Чтобы получить информацию о подписчиках нашей группы через апи необходим ключ доступа. Создать его можно в самом сообществе в разделе настроек.

API Ключ для работы с сообществом

Подписчики сообщества

Когда ключ для VK API создан, мы можем написать метод для обращения к апи. Сразу создадим специальный класс для laravel, в котором соберем функции для работы с вк.

Создадим в каталоге app новый подкаталог Library. В этом подкаталоге будем хранить файлы php которые будут содержать наши вспомогательные классы. Обращаться к ним мы будем из контроллеров, а доступа к ним от маршрутизатора не требуется.

В этом подкаталоге создадим файл VKAPI.php с несколькими закрытыми свойствами и методом конструктора.

token = $token; $this->groupId = $groupId; > >

Таким образом, при создании экземпляра мы передадим в конструктор наш апи ключ и идентификатор сообщества.

Также нам понадобится закрытый метод для непосредственного обращения к апи вконтакте. Дополним наш класс следующим методом.

private function apiRequest($method, $data = array()) < $data[‘v’] = $this->v; $data[‘access_token’] = $this->token; $string = http_build_query($data); $url = ‘https://api.vk.com/method/’.$method.’?’; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url.urldecode($string)); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); >

Еще по теме:  Как узнать кто задал анонимный вопрос в ВК в спроси

Здесь мы используем библиотеку curl для формирования get запроса к апи и передаем название метода и наши идентификационные данные.

Теперь напишем методы для извлечения подписчиков из сообщества и доступа к ним.

public function setSubscribers() < $data = [ ‘group_id’ =>$this->groupId, ‘sort’ => ‘time_desc’, ‘fields’ => ‘photo_max’ ]; $members = $this->apiRequest(‘groups.getMembers’, $data); foreach($members[‘response’][‘items’] as $member)< $this->subscribers[] = $member; $this->subscribersId[] = $member[‘id’]; > > public function getSubscribers()< return $this->subscribers; > public function getSubscribersId()< return $this->subscribersId; >

Не забудем добавить свойства subscribers и subscriberId в начало класса.

Класс VKAPI.php

В итоге наш класс для доступа к апи имеет такой вид.

token = $token; $this->groupId = $groupId; > public function setSubscribers() < $data = [ ‘group_id’ =>$this->groupId, ‘sort’ => ‘time_desc’, ‘fields’ => ‘photo_max’ ]; $members = $this->apiRequest(‘groups.getMembers’, $data); foreach($members[‘response’][‘items’] as $member)< $this->subscribers[] = $member; $this->subscribersId[] = $member[‘id’]; > > public function getSubscribers()< return $this->subscribers; > public function getSubscribersId()< return $this->subscribersId; > private function apiRequest($method, $data = array()) < $data[‘v’] = $this->v; $data[‘access_token’] = $this->token; $string = http_build_query($data); $url = ‘https://api.vk.com/method/’.$method.’?’; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url.urldecode($string)); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); > >

Клиентский код

Теперь мы можем использовать класс доступа в нашем контроллере. Для этого изменим контроллер cover таким образом.

setSubscribers(); return $cover->getSubscribers(); > >

Здесь мы подключаем файл класса. Создаем экземпляр и передаем id группы и ключ. А после этого выполняем сеттер и геттер. Когда мы обратимся к странице из браузера, то получим json объект со всеми подписчиками сообщества.

json response

Настройка Apache в Docker

Теперь осталось настроить вебсервер, чтобы корень сайта ссылался на правильный каталог нашего фреймворка.

Зайдем на виртуальный CentOS сервер и проверим, что контейнеры проекта запущены и работают в штатном режиме.

docker ps

docker ps

Зайдем внутрь контейнера с вебсервером с помощью команды exec и вызовем командную оболочку.

docker exec -it anonymous_www_1 /bin/bash

docker exec -it

Нам нужен файл настроек сервера apache. Он находится в папке /etc/. Отредактируем его.

nano /etc/apache2/sites-enabled/000-default.conf

Найдем строку DocumentRoot и добавим каталог public

DocumentRoot /var/www/html/public

Сохраним файл и выйдем из контейнера командой exit.

Возможные проблемы

Во-первых, в нашем контейнере вебсервера не установлены программы nano и mc. Установить их можно выполнив команды apt внутри контейнера.

apt-get update apt-get install mc -y apt-get install nano-y

Во-вторых, возможно наш класс VKAPI.php не будет найдем фреймворком. Тогда необходимо исправить файл composer.json, а именно добавить наш каталог с классами в раздел autoload.

«autoload»: < «psr-4»: < «App\»: «app/», «Database\Factories\»: «database/factories/», «Database\Seeders\»: «database/seeders/» >>,

И обновить информацию внутри фрейвморка выполнив команду composer внутри каталога фреймворка.

composer dump-autoload

Заключение

Мы написали класс для работы с апи вконтакте и научились его использовать. Настроили вебсервер для более удобной работы. И теперь мы можем использовать данные о нашем сообществе, чтобы закончить приложение.

До того, как вы уйдете, посмотрите наши статьи и уроки про Ардуино. Например, подключение OLED дисплея к Ардуино.

Источник: arcadepub.ru

Рейтинг
( Пока оценок нет )
Загрузка ...