суббота, 7 октября 2017 г.

API VK.

ЧАСТЬ 1.

Первый шаг. Создание приложения.


Выбираем: Standalone-приложение

Второй шаг. Авторизация и получение токена.

https://oauth.vk.com/authorize

client_id: ID приложения

redirect_uri: адрес, на который будет перенаправлен пользователь после прохождения автоизации. Здесь мы укажем: https://oauth.vk.com/blank.html

response_type: token

scope: Битовая маска настроек доступа приложения, которые необходимо проверить при авторизации пользователя и запросить, в случае отсутствия необходимых.

display: тип отображения страницы авторизации (page, popup, mobile).

Создадим файл tooken.php

<?php
// массив с правами
// https://vk.com/dev/permissions
$permissions = [
'notify', 'friends', 'photos', 'audio', 'video', 'docs', 'notes',
'pages', 'status', 'wall', 'groups', 'messages', 'email', 'notifications',
'stats', 'ads', 'market', 'offline'
];


$request_params = [
'client_id' => '6211065',
'redirect_uri' => 'https://oauth.vk.com/blank.html',
'response_type' => 'token',
'display' => 'page',
'scope' => implode(',', $permissions)
];
// сформируем url-адрес, на который мы будем отправлять запрос
// http_build_query — Генерирует URL-кодированную строку запроса
$url = 'https://oauth.vk.com/authorize?' . http_build_query($request_params);

echo $url;

?>


Выделим полученный url и перейдем по данному адресу:

https://oauth.vk.com/authorize?client_id=6211065&redirect_uri=https%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&display=page&scope=notify%2Cfriends%2Cphotos%2Caudio%2Cvideo%2Cdocs%2Cnotes%2Cpages%2Cstatus%2Cwall%2Cgroups%2Cmessages%2Cemail%2Cnotifications%2Cstats%2Cads%2Cmarket%2Coffline

Нажимаем Разрешить.

Из строки копируем параметр access_token
Свой токен поставить!!!

Это a64b6df931959b45c9a9ee8449ac8cfeab648aa7b2616046ad6baa832452bcebba2585c353c0405034

Перейдем на страницу методов: https://vk.com/dev/methods
Выберем метод. Например, https://vk.com/dev/groups.getMembers

Создаем новый файл: get_group_members.php

<?php
$fields = ['connections', 'site', 'education', 'contacts', 'photo_max', 'status', 'city'];


$request_params = [
'group_id' => 'apiclub',
'sort' => 'id_asc', // сортировка
'offset' => 0, // сдвиг
'count' => 30, // число пользователей, которые мы хотим получить
'fields' => implode(',', $fields), // поля, которые мы хотим получить от данных поьзователей
'access_token' => 'a64b6df931959b45c9a9ee8449ac8cf05eeab648aa7b26ad6baa832452bcebba2585c353c0405034'
];
$url = 'https://api.vk.com/method/groups.getMembers?' . http_build_query($request_params);

$result = file_get_contents($url);
echo $result;

Запускаем файл get_group_members.php
Открывается файл http://vk.loc/get_group_members.php
С данными в формате json

ЧАСТЬ 2. Отправка сообщения с медиа-вложением.
Создадим файл send_message.php

<?php
$request_params = [
'user_id' => 164096252,
'random_id' => mt_rand(20, 99999999),
'peer_id' => 164096252,
'domain' => 'anastasia_kapkova',
'chat_id' => 36,
'message' => 'Тестовое сообщение',
'v' => '5.52',
'access_token' => 'a64b6df931959b45c9a9ee8449ac8cfab648aa7b2616046ad6baa832452bcebba2585c353c0405034'
];

// адрес, на который мы отправляем запрос
$url = 'https://api.vk.com/method/messages.send?' . http_build_query($request_params);
file_get_contents($url); // file_get_contents — Читает содержимое файла в строку

Открываем файл send_message.php. Нам приходит сообщение.

Загрузка файлов.

Создаем файл: file_attachment_to_send.php

<?php
error_reporting(0);
// шаг №1
$request_params = [
'access_token' => 'a64b6df931959b45c9a9ee8449ac8cf05eeab64616046ad6baa832452bcebba2585c353c0405034',
'v' => '5.52' // версия api
];

// адрес, на который мы отправляем запрос
$url = 'https://api.vk.com/method/photos.getMessagesUploadServer?' . http_build_query($request_params);
$result = json_decode(file_get_contents($url), true);
// print_r($result);

// шаг №2 - загружаем картинку
// curl_init — Инициализирует сеанс cURL
$curl = curl_init();
$file = __DIR__ .'/cover.jpg'; // сохраняем путь к файлу

// создаем curl-файл
// mime_content_type — Определяет MIME-тип содержимого файла
// pathinfo — Возвращает информацию о пути к файлу
$file = curl_file_create($file, mime_content_type($file), pathinfo($file)['basename']);

// настроим curl-объект перед отправкой
// указываем куда мы будем делать запрос
// curl_setopt — Устанавливает параметр для сеанса CURL
// CURLOPT_URL - Загружаемый URL
curl_setopt($curl, CURLOPT_URL, $result['response']['upload_url']);

// указываем, что это будет post-запрос
curl_setopt($curl, CURLOPT_POST, true);

// эмулируем отправку формы
curl_setopt($curl, CURLOPT_HTTPHEADER, 'Content-type: multipart/form-data;charset=utf-8');

// отправляем post-данные
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);

// хотим получить данные после запроса
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// таймаут для запроса
curl_setopt($curl, CURLOPT_TIMEOUT, 10);

// будем следовать за нашим запросом
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

// после настройки выполняем запрос
// curl_exec — Выполняет запрос cURL
$response_image = json_decode(curl_exec($curl), true);

// закрываем соединение
curl_close($culr);

print_r($response_image);


// шаг № 3 - сохраняем файл
$request_params = [
'server' => $response_image['server'],
'photo' => $response_image['photo'],
'hash' => $response_image['hash'],
'access_token' => 'a64b6df931959b45c9a9ee8449ac8cf05eeab648aa7b2616046ad6baa832452bcebba2585c353c0405034',
'v' => '5.52' // версия api
];

// сохраняем картинку
$url = 'https://api.vk.com/method/photos.saveMessagesPhoto?' . http_build_query($request_params);
$result_image = json_decode(file_get_contents($url), true);

// отправка сообщения
$request_params = [
'user_id' => 164096252,
'random_id' => mt_rand(20, 99999999),
'peer_id' => 164096252,
'domain' => 'anastasia_kapkova',
'chat_id' => 36,
'attachment' => 'photo'.$result_image['response'][0]['owner_id'].'_'.$result_image['response'][0]['id'],
//'attachment' => 'audio'.$result_audio['response'][0]['owner_id'].'_'.$result_audio['response'][0]['id'],
'message' => 'Рекомендую книгу!',
'v' => '5.52',
'access_token' => 'a64b6df931959b45c9a9ee8449a5eeab648aa7b2616046ad6baa832452bcebba2585c353c0405034'
];

// адрес, на который мы отправляем запрос
$url = 'https://api.vk.com/method/messages.send?' . http_build_query($request_params);
file_get_contents($url); // file_get_contents — Читает содержимое файла в строку


Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html