Задать вопрос
@nikdjrus

Почему вместо ошибки в массиве error, выдается fatal error, при работе с wall.get|VK API?

Новичок, делаю скрипт который анализирует сделал ли пользователь репост. Код:
use VK\Client\VKApiClient; #Подключение VK.API (Composer не подключает)
		 require 'vendor/autoload.php'; #Попытка с composer
		

		 $vk = new VKApiClient();
		 $access_token = "токен(пользовательский)";
		// $owner_id = intval(htmlspecialchars($_POST['name']));
		$owner_id = 3214;  #ID(забаненый пользователь)
		$count = 1; #Кол-во постов, которые надо собрать
		$filter = "owner"; #Посты от человека
		$extended = 1; #в ответе будут возвращены дополнительные поля profiles и groups
		$params = array(
		'owner_id' => $owner_id,
		'count' => $count,
		'filter' => $filter,
		'extended' => $extended,

		);  #Массив со всеми параметрами
		$wall = $vk->wall()->get($access_token, $params); #Сам метод получения данных (Ошибка из-него, но не знаю почему)
                $from_id_right = -32012866; #Нужный id группы
		$user_from_id = $wall['items'][0]['copy_history'][0]['from_id']; #id группы человека(первого поста)


                 if ($from_id_right == $user_from_id) { #Если id нужной группы равен id группы первого поста пользователя
		 	echo "Пост есть";
		 }
		else {
		 	echo "Поста нет";
		}

И т.к пользователь забанен, место того чтобы выдать:
{
"error": {
"error_code": 18,
"error_msg": "User was deleted or banned",
"request_params": [{
"key": "oauth",
"value": "1"
}, {
"key": "method",
"value": "wall.get"
}, {
"key": "count",
"value": "1"
}, {
"key": "extended",
"value": "1"
}, {
"key": "filter",
"value": "owner"
}, {
"key": "owner_id",
"value": "3214"
}, {
"key": "v",
"value": "5.85"
}]
}
}
Оно выдает:
Fatal error: Uncaught VK\Exceptions\Api\VKApiUserDeletedException: User was deleted or banned in D:\OSPanel\domains\ru.test.ru\vendor\vkcom\vk-php-sdk\src\VK\Exceptions\Api\ExceptionMapper.php:42 Stack trace: #0 D:\OSPanel\domains\ru.test.ru\vendor\vkcom\vk-php-sdk\src\VK\Client\VKApiRequest.php(132): VK\Exceptions\Api\ExceptionMapper::parse(Object(VK\Client\VKApiError)) #1 D:\OSPanel\domains\ru.test.ru\vendor\vkcom\vk-php-sdk\src\VK\Client\VKApiRequest.php(88): VK\Client\VKApiRequest->parseResponse(Object(VK\TransportClient\TransportClientResponse)) #2 D:\OSPanel\domains\ru.test.ru\vendor\vkcom\vk-php-sdk\src\VK\Actions\Wall.php(65): VK\Client\VKApiRequest->post('wall.get', 'e2a70aeb9107c3f...', Array) #3 D:\OSPanel\domains\ru.test.ru\index.php(33): VK\Actions\Wall->get('e2a70aeb9107c3f...', Array) #4 {main} thrown in D:\OSPanel\domains\ru.test.ru\vendor\vkcom\vk-php-sdk\src\VK\Exceptions\Api\ExceptionMapper.php on line 42
  • Вопрос задан
  • 255 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@nikdjrus Автор вопроса
Решил выпилив из проекта vk api, и сделав через ссылку:
$access_token = "Токен пользователя"; #Токен пользователя
		$owner_id = intval(htmlspecialchars($_POST['name'])); #Создаем переменную с тем id, то ввел пользователь
		$count = 1; #Сколько постов анализируем
		$filter = "owner";#Посты только от автора
		$need_id = -133030665;#нужный id
		if ($owner_id == true) {# если id пользователя введено
			$adress = strval("https://api.vk.com/method/wall.get?access_token=e2a70aeb9107c3fd2dca049b28237f69cbbd71c3a45fc44f87e53c952ff81f612386c3050a8679b95bafa&owner_id=" .$owner_id."&count=". $count."&filter=". $filter ."&v=5.84");#Создаем vk api ссылку

		$wall = json_decode(file_get_contents($adress), true);#Анализируем сгенерируемую страницу и декодируем в ассоциативный массив
		$error_check = intval($wall['error']);#В переменную закладываем ошибку и преобраузуем в int(В случае если его нет будет 0)
		$post_check = $wall['response']['items'][0]['copy_history'][0]['from_id'];# Достаем id группы
		// var_export($post_check);
		// echo $error_check;
		if ((!$error_check == 1) and $post_check == $need_id) { #Если  нет ошибки и группа правильная
			echo "Всё хорошо";
		} 
		elseif (!$error_check ==1) { # Иначе если нет ошибки
			echo "Репост не найден";
		}
		else {
			echo "Пользователь не существует или забанен";
		}
		}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
VKApiClient выбрасывает исключение, вам нужно его ловить
php.net/manual/ru/language.exceptions.php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы