Как получить api id вконтакте. Получаем api ID из социальных сетей Вконтакте и Facebook

Помощь 16.04.2019
Помощь

У вас есть сообщество вконтакте? Бывает ли такое, что кто то написал негативный комментарий, кого-нибудь оскорбил, или просто написал отзыв о вашей компании или вопрос на который необходимо быстро ответить? Мы в PushAll написали микросервис, который позволяет получать уведомления о различных событиях в ваших сообществах. Дело в том, что Вконтакте недавно выкатил Callback API для сообществ , и мы решили им воспользоваться облачив из API в формат push-уведомлений.

Как этим пользоваться?


Нужно просто подписаться на канал микросервиса и следовать инструкциям

Вы прописываете адрес микросервиса в специальном разделе в настройках вашей группы, а в настройках микросервиса прописываете код, который нужно вконтакте для проверки. Также вы должны пройти авторизация через OAuth VK для того, чтобы микросервис мог получать данные о пользователях - аватарки и имена.

После этого вам будут приходить все уведомления, которые вы укажите в разделе «Типы событий»

При этом нужно понимать, что еще не все типы событий поддерживаются:

  • Сообщения
  • Комментарии
  • Записи
  • Выход/Вход в сообщество
  • Обсуждения
Эти типы приходят с аватаркой и именем пользователя пользователя, который инициировал событие, с названием события и самим событием.

Остальные типы, на данный момент приходят в виде «Неподдерживаемое уведомление» и передают весь JSON, который отдает вконтакте. В течении недели они будут доделаны.

Куда приходят уведомления?

Для тех, кто не в курсе, куда отправляет уведомления PushAll:
  • Android-приложение
  • Chrome-дополнение с историей
  • Веб-пуши в хром (Android+PC), яндекс браузер, vivaldi, firefox, Safari
  • Telegram-бот
  • Email
  • iOS (бета-версия)
Охват устройств и возможностей подключения будет еще увеличиваться.

Безопасность

Вконтакте подошли основательно к безопасности - скрипт получает только те данные, которые вы укажите, при этом нет никакого доступа на управление. Предоставление доступа к API, которое нужно для аватарок и имен пользователя запрашивает только разрешение offline, при этом даже не запрашивается email пользователя.

Ограничения

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

При этом сейчас нет никакой фильтрации - то есть все что вы укажите в ВК то и придет вам пушами. В дальнейшем подрузамевается:

  • Сделать возможность передачи JSON другому скрипту, то есть вы сможете использовать AdminVK как прокси, получать уведомления, а передавать запрос дальше в ваш скрипт сбора аналитики или куда либо еще
  • Сделать возможность указать доверенные ID пользователей и ID пользователей, которые должны получать уведомления. Т.е. вы сможете расшарить, как администратор, свои пуши на ваших модераторов
  • Фильтрация по словам. Например получать не все пуши, а лишь те, что содержат названия определенных брендов - с одной стороны упоминание бренда не является поводом для бана, но тут уже зависит от контекста
  • Распределение уведомлений между модераторами, т.е. исходя из второго пунта, можно будет равномерно распределить приходящие уведомления для уменьшения нагрузки на людей

Зачем нам это?

По сути это «proof-of-concept», то есть этот микросервис создан, чтобы показать, как можно использовать возможности PushAll для небольших сервисов связанных с уведомлениями. Например, у меня ушло около 1 часа на написание всего микросервиса для готовности в работе в виде первой альфы, при этом используется по сути стандартное PushAll API и любой может также написать свой микросервис, который сможет отправлять пользователям уведомления по различным событиям на множество платформ.

Это лишь первый микросервис из многих, которые мы будем делать потом.

Вконтакте

Для того, чтобы создать виджет для ВКонтакте, перейдите по ссылке - https://vk.com/dev/sites

На этой стрнице можно создать различные виджеты для взаимодействия возможностей ВК и Вашего сайта.

  1. Сайт\приложение: Если у Вас не подключен сайт в api ВК, то для начала нужно его подключить. Для этого выберите в выпадающем списке "Подключить новый сайт".
  2. Название сайта: Введите любое название.
  1. Адрес сайта - введите адрес подключаемого сайта.
  2. Основной домен сайта - прописывается автоматически.
  3. Тематика сайта - укажите тематику своего сайта.
  4. Количество комментариев - укажите максимальное количество отображаемых комментариев.
  5. Медиа - добавляет в форму комментариев кнопку "Прикрепить".
  6. Ширина - укажите ширину виджета.
  7. Код для вставки - данный код можно вставить в любое желаемое место на Вашем сайте. В нем и хранится уникальный apiID, который используется во многих расширениях Joomla-сайта.

Facebook

Для того, чтобы создать виджет для Facebook, перейдите по ссылке - https://developers.facebook.com/docs/plugins

На этой стрнице можно создать различные виджеты для взаимодействия возможностей Facebook и Вашего сайта.

Пример создания виджета комментариев:

Процес создания такой же, как и для ВК.

Если у Вас не создано приложение, то нужно его создать. Для этого нажмите на пункт меню "Приложения" и выберите "Create a New App".

Display Name: Введите название приложения.

Namespase: Введите уникальный идентификатор (может быть название Вашего сайта).

Нажимаем "Создать приложение", вводим код проверки и переходим непосредственно к созданию виджета.

Width: Укажите ширину виджета.

Number of Posts: Выберите максимальное количество отображаемых комментариев.

Color Scheme: Выберите цветовую схему виджета.

Нажимаем "Get code"

После нажатия, всплывает окно, в котором и хранится api ID.

Если Вам нужно будет быстро и без усилий вставить какой-нибудь виджет на joomla-сайт, прочитайте ЭТУ статью.

P.S. Таким же образом создаются и другие виджеты этих соц-сетей.

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

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

Чем это Вам поможет?

Если у вас есть сообщество, которое вы используете как бизнес инструмент для взаимодействия с вашей ЦА, которая находится Вконтакте, то эта функция просто необходима вам! И вот почему...

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

2. Мгновенная реакция ваших менеджеров на любой вопрос ваших клиентов заданный в сообществе.

3. Увеличение продаж за счет быстрой реакции на вопросы участников сообщества.

4. Контроль нежелательных комментариев которые портят имидж вашей компании (происки конкурентов).

Настройка отслеживания сообщества

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

Добавление сообщества в U-CRM


1 - скопируйте адрес вашего сообщества, id или короткое имя, например: http://vk.com/ucrmru короткое имя выделено жирным. И вставьте в поле добавления сообщества.

2 - нажмите добавить сообщество, после чего система попросит вас перейти в настройки.

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


1 - Скопируйте URL-адрес показанный в поле "Адрес Вашего сервера", после чего вставьте его в Настройках сообщества >> работа с API >> Callback API в поле "Адрес Вашего сервера" .

2 - в этом поле нужно указать Код указанный в Настройках сообщества >> работа с API >> Callback API в поле "Строка, которую должен вернуть сервер" .

Настройки в сообществе

Теперь вам надо сделать настройки в самом сообществе вконтакте, для этого перейдите в сообщество и зайдите в "Управление сообществом"


Сразу после этого идем в правом меню в раздел "Работа с API"



1 - Заходим в Callback API.

2 - В поле "Адрес Вашего сервера" вставляем URL-адрес, который выдала система U-CRM после добавления сообщества (было описано выше).

3 - Копируем Код указанный "Строка, которую должен вернуть сервер" и вставляем его в одноименное поле в U-CRM.

После сохранения настроек в U-CRM возвращаемся к настройкам сообщества Вконтакте и нажимаем во вкладке CallBack API кнопку "Обновить"<.b>, после чего должно получится что-то такое:


Если у вас все получилось,то все что осталось сделать настроить какие Типы событий будет отсылать Вконтакте в U-CRM. Для этого переходим в вкладку "Типы событий" , отмечаем все галочки (чтобы не париться)


Вы можете настроить уведомления о событиях в сообществе через VK Bot (удобнее) или через Telegram Bot. Уведомления будут приходить вам в личные сообщения.


Настроить интеграцию с Vk Bot или Telegram Bot вы можете в Личном профиле >> Настройки уведомлений .

На этом все настройки завершены уведомления должны приходить, потестируйте, если у вас не получилось, пишите в чат справа в углу - поможем!

Писать будем используя Сallback api(отправляет каждое действие в сообществе по отдельности на сервер). Поэтому его тоже следует настроить. Переходим в
«Управление сообществом» →»Работа с API». Для работы бота нужно зарегистрировать ключ доступа. Нажимаете «Создать ключ» и выбираете необходимые права доступа, для этого бота нужны только права на сообщения. Подтверждаем номер телефона и сохраняем куда нибудь ключ доступа. Теперь переходим во вкладку Callback API. Ставим свое название сервера и выбираем последнюю версию API(на данный момент она 5.80, и именно с ней ниже представленный бот будет работать 100%) . Во вкладке «Типы запросов» выбираем только входящие сообщения.

Настройка сервера

Теперь вам понадобится сервер для хостинга своего бота. Вы можете использовать бесплатные хостинги, например 000webhost.

Если вы будете использовать дешевые/бесплатные хостинги, то вероятнее всего на них будет отключен cURL(вы не сможете отправлять ботом медиа файлы, только текст), и его нельзя включить. У 000webhost все с этим нормально, можете использовать. Если у вас свой сервер или хороший купленный, то вам надо подключить cURL для полноценной работы бота из нашего примера.

Как работает Callback API и keyboard

Проведу краткий экскурс как все работает. Сallback API отсылает на ваш сервер любое событие, которое происходит в группе виде JSON. Полный список событий можно посмотреть во вкладке «Сallback API» → «Типы событий». Вот так выглядит JSON запрос когда пользователь отправляет сообщение, в данном случае он нажал на кнопку:

{"type":"message_new","object":{"date":1529668584,"from_id":89846036,"id":1522,"out":1,"peer_id":89846036,"text":"Золотая рыбка","conversation_message_id":305,"fwd_messages":,"important":false,"random_id":0,"attachments":,"payload":"{\"animals\":\"Goldfish\"}","is_hidden":false},"group_id":101461081}

{ "type" : "message_new" , "object" : { "date" : 1529668584 , "from_id" : 89846036 , "id" : 1522 , "out" : 1 , "peer_id" : 89846036 , "text" : "Золотая рыбка" , "conversation_message_id" : 305 , "fwd_messages" : , "important" : false , "random_id" : 0 , "attachments" : , "payload" : "{\"animals\":\"Goldfish\"}" , "is_hidden" : false } , "group_id" : 101461081 }

Тут есть несколько интересных полей, которые можно обработать: id пользователя, текст сообщения(text), полезная нагрузка кнопки(payload).

Отправка сообщений пользователю происходит с помощью метода messages.send . Если вы отправляете клавиатуру, то после всех стандартных параметров вы добавляете параметр keyboard, который содержит json кнопок, вот как он выглядит:

Keyboard: { "one_time": false, "buttons": [ [{ "action": { "type": "text", "payload": "{\"button\": \"1\"}", "label": "Red" }, "color": "negative" }, { "action": { "type": "text", "payload": "{\"button\": \"2\"}", "label": "Green" }, "color": "positive" }]

keyboard : {

"one_time" : false ,

"buttons" : [

"action" : {

"type" : "text" ,

"payload" : "{\"button\": \"1\"}" ,

"label" : "Red"

"color" : "negative"

"action" : {

"type" : "text" ,

"payload" : "{\"button\": \"2\"}" ,

"label" : "Green"

"color" : "positive"

Работа с библиотекой

Для работы бота мы используем самописную библиотеку на PHP. (Если ссылка не работает, то вот архив)вы можете найти документацию к библиотеке и скачать саму библиотеку. Вот короткий листинг готовых функций для написания бота, подробнее ищите по ссылке выше. Если вы хотите узнавать об изменениях в библиотеке, то напишите хотя бы одно сообщение нашему боту в ВК , через него мы будет вас оповещать об изменениях.

$vk = new vk_api(vk_key, version_api) — инициализация бота. Параметры: ключ сообщества(vk_key), версия API(version_api).

sendMessage(id, text) — функция отправки сообщений юзеру. Параметры: id пользователя(id), текст сообщения(text).

sendImage(id, patch) — функция отправки изображений. Параметры: id пользователя(id), путь до изображения(patch).

sendButton(id, text, buttons, one_time) — функция отправки сообщения с кнопками. Параметры: id пользователя(id), текст сообщения(не может быть пустым)(text), массив с кнопками(buttons), не обязательный параметр one_time, по дефолту false, если поставить true, то после нажатия на любую кнопку клавиатура скроется.

request(method, array_arguments) — универсальная функция работы с методами. Параметры: method — название метода из официального api, array_arguments — массив параметров.

sendOK() — Бета функция. Используется вместо echo «ok», помогает в тех случаях, когда время работы скрипта долгое, и бот начинает повторять сообщения по несколько раз.
ВАЖНО: есть использовать эту функцию, то у вас не будет отображаться вывод ошибок. Во время дебага заменяйте на echo «ok»

Полный код бота на PHP

Теперь перейдем собственно к коду, где прокомментирована почти каждая строка.
Данный код поддерживается на PHP 5.6+
В блоке CONFIG укажите свой ключ доступа сообщества, ключ для подтверждения сервера а так же выбранную вами версию API.

Полный код бота

"Fish"], "А какие бывают?", "blue"]; //Код кнопки "Fish" const BTN_BACK = [["command" => "start"], "<< Назад", "red"]; // Код кнопки "<< Назад" const BTN_SALMON = [["animals" => "Pink_salmon"], "Горбуша", "white"]; // Код кнопки "Горбуша" const BTN_GOLDFISH = [["animals" => "Goldfish"], "Золотая рыбка", "blue"]; // Код кнопки "Золотая рыбка" const BTN_PLOTVA = [["animals" => "Plotva"], "Плотва", "green"]; // Код кнопки "Плотва" $vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает ключ и версию api $data = json_decode(file_get_contents("php://input")); //Получает и декодирует JSON пришедший из ВК if ($data->type == "confirmation") { //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа } $vk->sendOK(); //Говорим vk, что мы приняли callback if (isset($data->type) and $data->type == "message_new") { //Проверяем, если это сообщение от пользователя $id = $data->object->from_id; //Получаем id пользователя, который написал сообщение $message = $data->object->text; if (isset($data->object->peer_id)) $peer_id = $data->object->peer_id; // Получаем peer_id чата, откуда прилитело сообщение else $peer_id = $id; if (isset($data->object->payload)){ //получаем payload $payload = json_decode($data->object->payload, True); } else { $payload = null; } if (isset($payload["command"]) or mb_strtolower($message) == "начать") { //Если нажата кнопка начать или << назад $vk->sendButton($peer_id, "Хочешь посмотреть на рыбок?", []); //Отправляем кнопку пользователю } else { if ($payload != null) { // если payload существует switch ($payload["animals"]) { //Смотрим что в payload кнопках case "Fish": //Если это Fish $vk->sendButton($peer_id, "Вот такие, выбирай", [ //Отправляем кнопки пользователю , ]); break; case "Pink_salmon": //Если это Горбуша $vk->sendMessage($peer_id, "Держи свою горбушу!"); //отправляем сообщение $vk->sendImage($peer_id, "img/pink_salmon.jpg"); //отправляем картинку break; case "Goldfish": //Если это Золотая рыбка $vk->sendMessage($peer_id, "Она исполнит твои желания..."); $vk->sendImage($peer_id, "img/goldfish.jpg"); break; case "Plotva": //Если это Плотва $vk->sendMessage($peer_id, "Ой, похоже картинку перепутали)"); $vk->sendImage($peer_id, "img/plotva.jpg"); break; default: break; } } } } ?>

include "vk_api.php" ; //Подключаем библиотеку для работы с api vk

//**********CONFIG**************

const VK_KEY = "your_key" ; //тот самый длинный ключ доступа сообщества

const ACCESS_KEY = "your_key" ; //например c40b9566, введите свой

const VERSION = "5.80" ; //ваша версия используемого api

//******************************

const BTN_FISH = [ [ "animals" = > "Fish" ] , "А какие бывают?" , "blue" ] ; //Код кнопки "Fish"

const BTN_BACK = [ [ "command" = > "start" ] , "<< Назад" , "red" ] ; // Код кнопки "<< Назад"

const BTN_SALMON = [ [ "animals" = > "Pink_salmon" ] , "Горбуша" , "white" ] ; // Код кнопки "Горбуша"

const BTN_GOLDFISH = [ [ "animals" = > "Goldfish" ] , "Золотая рыбка" , "blue" ] ; // Код кнопки "Золотая рыбка"

const BTN_PLOTVA = [ [ "animals" = > "Plotva" ] , "Плотва" , "green" ] ; // Код кнопки "Плотва"

$vk = new vk_api (VK_KEY , VERSION ) ; // создание экземпляра класса работы с api, принимает ключ и версию api

$data = json_decode (file_get_contents ("php://input" ) ) ; //Получает и декодирует JSON пришедший из ВК

if ($data -> type == "confirmation" ) { //Если vk запрашивает ключ

exit (ACCESS_KEY ) ; //Завершаем скрипт отправкой ключа

$vk -> sendOK () ; //Говорим vk, что мы приняли callback

if (isset ($data -> type ) and $data -> type == "message_new" ) { //Проверяем, если это сообщение от пользователя

$id = $data -> object -> from_id ; //Получаем id пользователя, который написал сообщение

$message = $data -> object -> text ;

if (isset ($data -> object -> peer_id ) )

$peer_id = $data -> object -> peer_id ; // Получаем peer_id чата, откуда прилитело сообщение

else

$peer_id = $id ;

if (isset ($data -> object -> payload ) ) { //получаем payload

$payload = json_decode ($data -> object -> payload , True ) ;

} else {

$payload = null ;

if (isset ($payload [ "command" ] ) or mb_strtolower ($message ) == "начать" ) { //Если нажата кнопка начать или << назад



Рекомендуем почитать

Наверх