<
  • Главная
Статьи

Відправлення повідомлення із зображенням на стіну групи VK через PHP

  1. створення програми
  2. Отримуємо access token
  3. PHP код

Для початку ви повинні бути авторизовані в VK і бути адміністратором групи. Далі потрібно створити додаток.

створення програми

Створюємо Standalone-додаток на com/apps?act=manage> https://vk.com/apps?act=manage

У налаштуваннях програми включаємо Open API, вказуємо адресу свого сайту і базовий домен, там же знаходиться ID додатки і захищений ключ.

Отримуємо access token

Етап 1: потрібно отримати права і секретний код. Формуємо URL підставляючи дані свого застосування і вставляємо його в браузер. У відповіді отримуємо код.

https://oauth.vk.com/authorize?client_id= ID_ПРІЛОЖЕНІЯ & display = page
& Redirect_uri = https: //api.vk.com/blank.html&scope=offline,wall,photos
& Response_type = code & v = 5.60

Етап 2: запитуємо access_token. Формуємо новий URL, підставивши client_id, client_secret і отриманий вище код. У відповіді отримуємо access_token.

https://oauth.vk.com/access_token?client_id= ID_ПРІЛОЖЕНІЯ
& client_secret = ЗАЩІЩЕННИЙ_КЛЮЧ & redirect_uri = https: //api.vk.com/blank.html
& code = СЕКРЕТНИЙ_КОД

PHP код

$ Group_id = 'ID_ПРІЛОЖЕНІЯ'; $ Access_token = 'ACCESS_TOKEN'; $ Message = 'Hello, world!'; $ Image = __DIR__. '/Logo.png'; // Отримання сервера vk для завантаження зображення. $ Res = json_decode (file_get_contents ( 'https://api.vk.com/method/photos.getWallUploadServer?group_id='. $ Group_id. '& Access_token ='. $ Access_token)); if (! empty ($ res-> response-> upload_url)) {// Завантаження фотографії на сервер. $ Ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ res-> response-> upload_url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, array ( 'photo' => '@'. $ image)); // Починаючи з версії PHP 5.5 файли відправляються через клас CurlFile: // curl_setopt ($ ch, CURLOPT_POSTFIELDS, array ( 'photo' => new CurlFile ($ image))); $ Res = json_decode (curl_exec ($ ch)); curl_close ($ ch); if (! empty ($ res-> server)) {// Збереження фото в групі. $ Res = json_decode (file_get_contents ( 'https://api.vk.com/method/photos.saveWallPhoto?group_id='. $ Group_id. '& Server ='. $ Res-> server. '& Photo ='. Stripslashes ($ res-> photo). '& hash ='. $ res-> hash. '& access_token ='. $ access_token)); if (! empty ($ res-> response [0] -> id)) {// Відправляємо повідомлення. $ Params = array ( 'access_token' => $ access_token, 'owner_id' => '-'. $ Group_id, 'from_group' => '1', 'message' => $ message, 'attachments' => $ res- > response [0] -> id); file_get_contents ( 'https://api.vk.com/method/wall.post?'. http_build_query ($ params)); }}}

Можливі проблеми

  • PHP помилка: Warning: file_get_contents () [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?

    Функція file_get_contents () не може підключиться по https, потрібно включити PHP модуль openSSL.

  • PHP помилка: Deprecated: curl_setopt (): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in ...

    Починаючи з версії PHP 5.5 файли відправляються через клас CURLFile .

  • API повертає помилку - error_code: 14, error_msg: Captcha needed

    Це відбувається через занадто частих запитів до API або у облікового запису VK був відв'язано номер мобільного телефону.

Com/apps?
Com/authorize?
Com/access_token?
GetWallUploadServer?
SaveWallPhoto?
Post?
File-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью