Иконка ресурса

Постинг в группу ВК 0.3

Нет прав для скачивания

Protektor

Пользователь
завелось, но пришлось приложение пересоздавать.

но обновлять скрипт все равно позже прийдется

Мы не рекомендуем использовать в запросах номера версий ниже 5.0, поскольку старые версии (включая 3.0 и 4.0) в будущем перестанут поддерживаться.
на гите

Please Login or Register to view hidden text.

, там php7.1+ и не ниже, можно будет в свободное время по кавырять.
 

Kryl

Пользователь
Тоже авторизация упала , хоть бы предупреждали , а то делают у себя в Вк все втихаря ..... Ну у меня то проще под 5.73 поправил .
 

Barbarossa178

Пользователь
Поправил код... Постит и картинку загружает, но есть вопрос. Картинку он должен с url из темы брать? либо же из папки vk?

Пока так, если кто разберётся как сделать, что бы добавлял картинку как фото, а не как ссылку, пишите 1678881602292.png
 

Вложения

  • Постинг в группу ВК [BETA 0.3.5].zip
    4.5 KB · Просмотры: 12
Последнее редактирование:

LAV

Пользователь
1709301525344.png

Код:
<?php

namespace vkApi;

class post{
    private $vk;
    private $owner;
    function __construct(vk $vk, $user = null, $group = null){
        $this->vk = $vk;
        if(!$user && !$group){
            throw new \Exception('Not found group or user');
        }
        $this->owner = array(
            'type' => $user ? 'owner_id' : 'group_id',
            'value' => $user ? $user : $group
        );
        $this->owner['value'] = (int) preg_replace('/([^\d]+)/', '', $this->owner['value']);
    }

    function post($text, $img = null){
        if($img) {
            $data = $this->load($img);
            $img = $data->response[0]->id;
        }
        $data = array(
            'message' => $text,
            'owner_id' => $this->owner['value']
        );
        if($img){
            $data['attachments'] = $img;
        }
        if($this->owner['type'] == 'group_id'){
            $data['owner_id'] = '-' . $data['owner_id'];
        }

        $data = $this->vk->get('wall.post', $data);
        if(isset($data->error)){
            throw new \Exception($data->error->error_msg);
        }
        return $data;
    }

    function load($src){
        $photo = (array)$this->getPhoto($src);
        $photo[$this->owner['type']] = $this->owner['value'];
        $data = $this->vk->get('photos.saveWallPhoto', $photo);
        return $data;
    }

    private function getPhoto($src){
        $name = VKIMAGES_DIR . ''.md5($src).'.png';
        file_put_contents($name, file_get_contents($src));
        $ch = curl_init($this->getServer());
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            'photo' => curl_file_create($name)
        ));
        $response = curl_exec( $ch );
        curl_close( $ch );
        return json_decode($response);
    }

    private function getServer(){
        $data = $this->vk->get('photos.getWallUploadServer', array(
            $this->owner['type'] => $this->owner['value'],
        ));
        return $data->response->upload_url;
    }


}
как исправить это и почему не постит в вк. только создает фото в iternal_data/vk.
 
Сверху