Задать вопрос
fubarblg
@fubarblg
Начинающий web-разработчик

Что не так с php-скриптом для VK API?

Написан скрипт для постинга записей в открытые сообщества ВК методом wall.post. Скрипт успешно выполняется и никаких ошибок не выдает, однако новые записи в указанной в скрипте группе не появляются. В чем может быть проблема?

PS. Токен без ограничений по времени получен и вписан в скрипт. Токен для stand-alone приложения.

Скрипт:
<?php
/*
VK-API WALL.POST Отправляем запись в группу методом post, через CURL
*/
$group_id ="-123108209";
$token = "тут мой токен";
$api_ver = "5.74";
$text = file_get_contents('post_data.txt');
$url = sprintf('https://api.vk.com/method/wall.post?');
$ch = curl_init();
curl_setopt_array( $ch, array (
    CURLOPT_POST           => TRUE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_SSL_VERIFYPEER => FALSE,
    CURLOPT_SSL_VERIFYHOST => FALSE,
    CURLOPT_POSTFIELDS     => array(
        "owner_id"     => $group_id,
        "from_group"   => 1,
        "Message"      => $text,
        "access_token" => $token,
        "v"            => $api_ver,

),
    CURLOPT_URL => $url,
));
$query = curl_exec($ch);
curl_close($ch);
if(!$query){
    printf('Error');
    exit;
}
else{
    printf('Success');
    exit;
}
  • Вопрос задан
  • 453 просмотра
Подписаться 1 Средний Комментировать
Решение пользователя Сергей Соколов К ответам на вопрос (2)
sergiks
@sergiks Куратор тега PHP
♬♬
Разбирайте ответ от ВК, вполне возможно, что там содержится описание ошибки.

Вместо
printf('Success');
exit;


надо что-то типа
$decoded = json_decode($query);
if(!$decoded) {
  printf("ВК вернул невообразимую фигню: %s", $query);
}
else if( $decoded->error) {
  printf("Ошибка %d: %s\n", $decoded->error->error_code, $decoded->error->error_msg);
} else if( $decoded->response) {
  printf("Пост опубликован с id %s\n", $decoded->response);
}
exit();


Upd. возможно, дело в размещаемом сообщении и сurl. Попробуйте вместо CURLOPT_POSTFIELDS => array( ...
сделать так:
CURLOPT_POSTFIELDS     =>  http_build_query( array( ... ))
Ответ написан
Комментировать