@rusgayfer

Ошибка при установлении сервера Callback API VK?

Устанавливаю сервер для сообщества POST-запросом

$url = 'https://api.vk.com/method/groups.addCallbackServer';
                      $params = array(
                      'group_id' => $d['id_group'],
                      'url' => 'https://test.ru/callback/api.php?key=0aa3e5tugzw6k6hgsoda',   // Если что скрыл название своего сайта
                      'title' => 'Сервер', 
                      'access_token' => $d['token'],  // access_token 
                      'v' => '5.73',
                                     );

                      // В $result вернется id отправленного сообщения
                      $requestpost = file_get_contents($url, false, stream_context_create(array(
                      'http' => array(
                      'method'  => 'POST',
                      'header'  => 'Content-type: application/x-www-form-urlencoded',
                      'content' => http_build_query($params)
                                      )
                       )));


Выходит такая ошибка
5a996afb1b082827491804.png

Пробывал и GET запросами и менял кодировки файла ничего не помогает, не устанавливается через API. А когда нажимаю подтвердить вручную все срабатывает, горит зеленая галочка. Как это исправить?
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
vkapi
@vkapi
Для тех, кто будет потом гуглить:
если callback-сервер добавляется через API, то и код подтверждения нужно получать через API методом groups.getCallbackConfirmationCode. Он отличается от кода в web-версии сайта.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Адрес сервера неправильно пишите. Просто https://server.ru/callback/api.php
А вот в самом api.php уже пишите:
$confirmation_token = '58e46a05';
$data = json_decode(file_get_contents('php://input'));
switch ($data->type):
    case 'confirmation': echo $confirmation_token; break;
    case 'wall_post_new': реакция на событие; echo('ok'); break;
    ...
endswitch;
Ответ написан
За использования file_get_contents для запросов, можно и по рукам надавать :)
Ответ написан
@rusgayfer Автор вопроса
Делаю проверку так:

$groupsgetCallbackConfirmationCode = json_decode(file_get_contents("https://api.vk.com/method/groups.getCallbackConfirmationCode?group_id={$cal['id_group']}&access_token={$cal['token']}&v=5.73"));		

// Строка для подтверждения адреса сервера из настроек Callback API 
//$confirmation_token = $cal['confirmation_token']; 
$confirmation_token = $groupsgetCallbackConfirmationCode->response->code;
// Версия API
$v = '5.73';

// Ключ сообщества для отправки сообщений (от его имени отправляются сообщения)
$token_message = 'токен';

//Получаем и декодируем уведомление 
$data = json_decode(file_get_contents('php://input')); 

//Проверяем, что находится в поле "type" 
switch ($data->type) { 
//Если это уведомление для подтверждения адреса... 
case 'confirmation': 
//...отправляем строку для подтверждения 
echo $confirmation_token; 
break;


а как сделать проверку, когда вставляешь сервер вручную, а не через API?

то есть должен проверить еще $confirmation_token = $cal['confirmation_token'];
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Xsolla Пермь
от 100 000 до 150 000 руб.
Xsolla Пермь
от 100 000 до 150 000 руб.