@Fibonachy
Нубас

CallBack api VK нерабочий пример?

На этой странице представлен пример работы с callback api Вконтакте.
<?php 

if (!isset($_REQUEST)) { 
  return; 
} 

//Строка для подтверждения адреса сервера из настроек Callback API 
$confirmation_token = 'секретная сторка'; 

//Ключ доступа сообщества 
$token = 'секретный ключ'; 

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

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

//Если это уведомление о новом сообщении... 
  case 'message_new': 
    //...получаем id его автора 
    $user_id = $data->object->user_id; 
    //затем с помощью users.get получаем данные об авторе 
    $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&v=5.0")); 

//и извлекаем из ответа его имя 
    $user_name = $user_info->response[0]->first_name; 

//С помощью messages.send и токена сообщества отправляем ответное сообщение 
    $request_params = array( 
      'message' => "Hello, {$user_name}!", 
      'user_id' => $user_id, 
      'access_token' => $token, 
      'v' => '5.0' 
    ); 

$get_params = http_build_query($request_params); 

file_get_contents('https://api.vk.com/method/messages.send?'. $get_params); 

//Возвращаем "ok" серверу Callback API 
    echo('ok'); 

break; 
} 
?>

Залил файлик с кодом на сервер, в логах сначала получал "Failed open input stream".
Погуглил, заменил file_get_contents на cURL (код ниже)
<?php

function url_get_contents ($Url) {
    if (!function_exists('curl_init')){
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}


if (!isset($_REQUEST)) {
  return;
}

//Строка для подтверждения адреса сервера из настроек Callback API
$confirmation_token = 'секретная сторка';

//Ключ доступа сообщества
$token = 'секретный ключ';

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

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

//Если это уведомление о новом сообщении...
  case 'message_new':
    //...получаем id его автора
    $user_id = $data->object->user_id;
    //затем с помощью users.get получаем данные об авторе
    $user_info = json_decode(url_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&v=5.0"));

//и извлекаем из ответа его имя
    $user_name = $user_info->response[0]->first_name;

//С помощью messages.send и токена сообщества отправляем ответное сообщение
    $request_params = array(
      'message' => "Hello, {$user_name}!",
      'user_id' => $user_id,
      'access_token' => $token,
      'v' => '5.0'
    );

$get_params = http_build_query($request_params);

file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);

//Возвращаем "ok" серверу Callback API
    echo('ok');

break;
}
?>

Теперь получаю следующее
4ac7d341b5b542999298e8a9fda61ab1.png
Что делать и кто виноват?)
  • Вопрос задан
  • 1667 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sonik0
Давай в вк, помогу тебе
https://vk.com/axiell
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы