Как правильно использовать wall.post api vk attachments

448
04 июля 2017, 23:51

Как правильно использовать параметр attachments на api vk метод wall.post в php делаю так:

$user_wall = $vk->api('wall.post', array(
        'owner_id'      => '197240174',
        'friends_only'  => '0',
        'message'       => 'name',
        'access_token'  => $token,
        'attachments' => '<type>photo-http://gd3.alicdn.com/bao/uploaded/i3/3003094957/TB2pDa5aA1M.eBjSZFFXXc3vVXa_!!3003094957.jpg'
    ));

а именно надо постить изображения по ссылке. Без загрузки в вк

Answer 1

Лично я использую такой код для сохранения фотографии на сервере ВК и получении ее ссылки. В переменной $fok и будет необходимая ссылка на картинку, для вставки в attachments

file_put_contents('1.jpg', file_get_contents(//линк на фотку)); //Сохраняем картинку к себе 
      $tok = 'xxxxxxxxxxxxxxxx'; ///Токен 
      $myidgr = 'xxxxxxx'; ///ID или домен группы - паблика 
      $imga = '1.jpg'; ///Картинка для постинга 
 
 
///Получаем разрешение на загрузку картинки Вконтакте 
   $getwall = 'https://api.vk.com/method/photos.getWallUploadServer?group_id='.$myidgr.'&access_token='.$tok; 
   $dl = file_get_contents($getwall); 
   $dl = json_decode($dl); ///Декодируем json 
   $dl = $dl->response->upload_url; ///Получаем ссылку загрузки от Вконтакте 
    
            $file = new CURLFile(realpath("$imga")); ///Загружаем картинку 
            $ch = curl_init($dl); 
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
            curl_setopt($ch, CURLOPT_POST, 1); 
            curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => $file)); 
            $data = curl_exec($ch); 
            curl_close($ch); 
             
///Получаем данные для сохранения картинки              
            $fot = $data; ///Получаем данные из массива 
            $fot = json_decode($data); ///Декодируем json 
            $fot = $fot->photo; ///Получаем данные из массива 
 
            $hash = json_decode($data); ///Декодируем json 
            $hash = $hash->hash; ///Получаем данные из массива 
 
            $serv = json_decode($data); ///Декодируем json 
            $serv = $serv->server; ///Получаем данные из массива 
 
 
///Сохраняем фото на сервер Вконтакте 
$savephoto = 'https://api.vk.com/method/photos.saveWallPhoto?group_id='.$myidgr.'&hash='.$hash.'&server='.$serv.'&photo='.$fot.'&access_token='.$tok; 
      $result = file_get_contents($savephoto); 
      $fok = json_decode($result); ///Декодируем json 
      $fok = $fok->response->id; ///Получаем данные из массива 
 
 
///Вырезаем данные из информации после сохранения на сервер (Использовать если не работает переменная // $result) 
         $fok = substr($result, strpos($result,'"id":"')+6, strlen($result)); ///Отрезаем начало до photo 
unlink('1.jpg'); //Удаляем картинку

READ ALSO
Yii2. Получить параметры в beforesave

Yii2. Получить параметры в beforesave

Хочу перед тем, как сохранить строку в базе, сделать некие манипуляцииНо данных находящихся в $this не хватает

282
Проверка пришедших в post данных

Проверка пришедших в post данных

Написал скрипт, есть необходимость проверить пришедший на него post запрос на наличие домена в блек листеТ

166
Не корректно выводится дата

Не корректно выводится дата

У меня нарисовалась мелкая, но неприятная помарка при выводе датыНа странице меток пункты списка должны выглядеть так:

202
Как изменить кодировку отчета об ошибке в PHP?

Как изменить кодировку отчета об ошибке в PHP?

При выполнении скрипта запроса

196