Имеем PHP скрипт для VK API. Скрипт создает запись в открытых группах ВК (метод wall.post) методом execute, т. е. один скрипт должен создавать записи сразу в нескольких сообществах.
<?php
$token = file_get_contents('token.txt');
$code = 'var params = {
"message": "test",
"from_group": 0,
};
var out = { "result": [] };
params.owner_id = -84832628;
out.result.push( API.wall.post(data));
params.owner_id = -154893317;
out.result.push( API.wall.post(data));
params.owner_id = -39257424;
out.result.push( API.wall.post(data));
return out;';
$url = sprintf('https://api.vk.com/method/execute?');
$ch = curl_init();
curl_setopt_array( $ch, array (
CURLOPT_URL => $url,
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE,
CURLOPT_POSTFIELDS => array(
"code" => $code,
"access_token" => $token,
"v" => '5.80',
),
));
$result = curl_exec($ch);
curl_close($ch);
if(!$result){
printf('Ошибка. Пост не опубликован!');
exit;
}
$data = json_decode($result);
if(!$data){
printf('ВК вернул не json!');
exit;
}
if($data->error || !$data->response){
printf('ВК вернул ошибку %s', json_encode($data->error));
exit;
}
$response = $data->response;
foreach($response as $wall_post_result) {
echo 'post_id: ' . $wall_post_result->post_id . PHP_EOL;
}
При выполнении вернул ошибку:
ВК вернул ошибку {"error_code":12,"error_msg":"Unable to compile code: undefined identifier 'data' in line 8","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"execute"},{"key":"code","value":"var params = {\r\n \"message\": \"test\",\r\n \"from_group\": 0,\r\n};\r\nvar out = { \"result\": [] };\r\n\r\nparams.owner_id = -84832628; \r\nout.result.push( API.wall.post(data));\r\n\r\nparams.owner_id = -154893317; \r\nout.result.push( API.wall.post(data));\r\n\r\nparams.owner_id = -39257424;\r\nout.result.push( API.wall.post(data));\r\n\r\nreturn out;"},{"key":"v","value":"5.80"}]}
Большая просьба подсказать что и в каком месте делаю не правильно. Заранее благодарю за внимание!
У вас в коде не определена переменная data
в строке API.wall.post(data);
, вам стоит лишь заменить data
на params
и все будет работать.
Получится следующий execute
код:
var params = {
"message": "test",
"from_group": 0,
};
var out = { "result": [] };
params.owner_id = -84832628;
out.result.push(API.wall.post(params));
params.owner_id = -154893317;
out.result.push(API.wall.post(params));
params.owner_id = -39257424;
out.result.push(API.wall.post(params));
return out;
И результатом данного кода будет следующий ответ:
{
"response": {
"result": [{
"post_id": 14627
}, {
"post_id": 6883
}, {
"post_id": 7239823
}]
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Yii2 я изучаю недавно, и столкнулся с такой проблемойСуть задачи: вывести всех студентов специальности
Кто знаком с api google sheets, не могли бы подсказать, что не так с данным кодом? Выдает ошибку в последней строке кодаПросьба не кидать ссылки на документацию
Как избавиться от ошибки
Требуется настроить отправку и получение SMS через GSRS- модем (используется GPRS-модем iRZ MC52iT)Сообщения будут хранится в базе и предполагается,...