Четверг, 25.05.2017, 02:38
Приветствую Вас Гость | RSS
SSoft File Archive
Главная
Регистрация
Вход
Меню сайта

Категории раздела
PHP [2]

Реклама

Статистика




Онлайн всего: 1
Гостей: 1
Пользователей: 0

Block title

Главная » Статьи » Программирование » PHP

Автоматическое оповещение читателей о новостях с помощью ВКонтакте. Часть 2
В первой части мы научились автоматически публиковать записи на нашу стенку, сегодня же добавим блекджек и шлюх возможность добавлять к ссылкам картинки автоматически. В этот раз я не буду приводить готовые php функции, так как они описаны в первой части, а сейчас лишь буду описывать нужные нам php-файлы и параметры, которые нужно передавать им.

После первой части я получил большое количество сообщений, большая часть из которых посвящалась тому, что я продемонстрировал в статье возможность публикации на собственной стенке, а автоматическую публикацию на стене Группы или Официальной странице я не показал. Поэтому я начну с того, какие параметры нужно для этого передавать.

Официальная страница

Вы должны входить в состав администраторов страницы для возможности публикации новостей. Рассмотрим нужны нам параметры, которые передаются al_wall.php при публикации простого сообщения:
act => 'post', 'delete'
al => 1
facebook_export => ''
status_export => ''
friends_only => ''
hash => ''
message => ''
note_title => ''
official => ''
to_id   => ''
type => 'all'
media   => ''
media_type => 'photo'

В параметре act мы передаем необходимо действие — либо 'post' для публикации сообщения, либо 'delete' для его удаления. Причем, при удалении необходимо так же передать параметр 'post', который содержит id страницы и порядковый номер сообщения на стенке, например, 11111_32;
Параметры facebook_export и status_export служат для экспорта в сервисы Facebook и Twitter, если таковые прилинкованы к странице;
Параметр hash нам уже знаком, его можно найти при открытии страницы или группы в блоке с параметрами под названием post_hash;
Стоит заметить, что параметр note_title опускается, то есть заметки создано не будет, вместо этого вашу запись обрежут, если она превысит допустимый размер;
В to_id стоит передавать ваш id Официальной страницы или группы со знаком минус впереди, например, '-11111';
Осталось рассмотреть media и media_type, в первом следует передавать внутреннюю ссылку на нужный объект, а во втором его тип. Например, media => '1111_1213232213', media_type => 'photo'. В данном случае к записи будет прикреплена указанная фотография. Тип так же может быть 'audio', 'video'. Если передать тип 'share', а в 'media' указатель на фото, то в сообщении-ссылке данная фотка будет в подсказке. Только нужно не забыть добавить еще три известных нам параметра для ссылки — url, title и description

Увы, но пока я не нашел способа публиковать сообщение-фото совместно с сообщением-ссылкой как это сделано на страничке Хабрахабр ВКонтакте.

Загрузка фотографии

На самом деле при загрузке картинки главное не забывать о прокси, а дальше все достаточно просто. Итак, чтобы загрузить картинку мы воспользуемся файлом share.php, который предназначен для публикации внешних ссылок. Вот пример POST параметров, которые необходимо на него передать:

act => a_photo
url =>
image =>
extra =>

В параметре url передаете вашу ссылку, в параметре image — ссылку на нужную картинку, а парамерт extra можно проигнорировать. Отмечу, что если вы используете CURL, как я в прошлой части, то не забудьте следующее:
curl_setopt($ch, CURLOPT_REFERER, 'http://vkontakte.ru/share.php');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

Второй параметр нам нужен, так как после отправки POST запроса, share.php перенаправит запрос (путем возврата 302 ошибки и передачи параметра Location) на upload.php с нужным сервером и необходимыми параметрами, рассматривать которые, я думаю, не имеет смысла. В свою очередь upload.php перенаправит запрос на complete.php, который, в зависимости от успеха, выдаст либо ошибку, либо нужный нам результат.

Вариант с ошибкой:
<script type="text/javascript">
document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
parent.onUploadFail(0, 'Неизвестная ошибка');
</script>

Это значит, что скорее всего ваша ссылка на картинку неверна или невалидна. Вариант, который нам нужен выглядит так:
<script type="text/javascript">
document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
parent.onUploadDone(0, {"user_id":1234567,"photo_id":235889241});
</script>

Вот он, тот самый photo_id, который нужно передавать при размещении фотографии на стенке, в данном случае полный составной id: 1234567_235889241. Просто, неправда ли?

Чтобы получить прямой путь к загруженной фотке необходимо послать запрос к al_photo.php, с работой которого я пока до конца не разобрался, в частности пока не ясно какой именно hash он требует для проверки запроса. Если кто-то разберется — сообщите:).

Стоит заметить, что можно разместить ссылку с картинкой в подсказке не только через al_wall.php как я описал выше, но и через share.php, для этого нужно снова послать запрос к share.php с большим количеством параметров. Поставлю коментарии, там где могут возникнуть трудности:
act: 'a_submit'     // метод
hash: shareHash     // параметр функции onDomReady, который можно найти на странице share.php при открытии, полное название window.shareHash
title:              // наименование заметки
url:                // ссылка
share_title:        // название статуса
share_text:         // описание статуса
share_comment:      // ваш комментарий
image_url:          // ссылка на картинку, если загрузка картинки вернула onUploadFail
photo_owner_id:     // id загрузившего фото
photo_id:           // id, полученный нами выше
privacy_note: 0     // можно просто поставить 0
privacy_notecomm: 0 // можно просто поставить 0
to_status: 1        // 1, если публикуем статус
status_export:      // экспорт статуса в твиттер
to_note:            // пусто, если публикация в статус и 1, если в заметку

Вообще через share.php можно публиковать видео и аудио, загружать их на сервер через параметры extra и extra_data, однако я не вижу в этом острой необходимости.

Думаю, что пока этого более чем достаточно, когда найду способ совмещения в одном сообщении ссылки и фото, то напишу каким образом это можно сделать. Или буду надеяться, что они откроют такую функциональность для Групп и Официальных страничек. Замечу только, что если загружать фотку через интерфейс ВКонтакте на Официальной странице, то photo_id будет присвоен вида '[-id страницы]_[номер_фото]', а при просмотре фотки Автором будет ваша страница или группа.

Такого эффекта можно добиться и через скрипт, если передавать параметры не на share.php, а напрямую на upload.php, но в этом случае нам нужно знать еще кучу параметров, в том числе два разных hash-параметра, поэтому этот способ я рассматривать не стал.

Отдельная просьба задавать вопросы по теме в комментариях, а не через личную почту, потому что большинство вопросов одинаковы и приходится объяснять одно и то же каждый раз :).


UPD: По просьбам в комментариях набросал простенький класс и пример использования.
Брать тут: github.com/xbreaker/vk.wallpost
Категория: PHP | Добавил: slidersite (28.03.2011)
Просмотров: 5521 | Теги: php, загрузка файлов, вконтакте, кросспостинг | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск

Друзья сайта
  • Моя машина ВАЗ 2170
  • Slider Blog - Улицы Уфы
  • Юмор
  • UFALIFT Городской портал о лифтах.
  • Блог про Уфу
  • Аккумуляторы для мобильных устройств

  • Оплаченая реклама

    Теги
    аптеки Аптеки Уфа Круглосуточные аптеки Легенды Уфы вирус Новоалександровка боты Боты для CS 1.6 боты для CS1.6 php PodBot вконтакте кросспостинг Гостиный Двор scarabay Богородско-Уфимский храм браузер скачать Спасский храм Уфа доставка Avira AntiVir Personal ICQ скачать Уфимские казармы Египет карта скачать книгу бесплатно скачать Тим Пауэрс ICQ icq для windows mobile Pigeon Аська для Windows Mobile gmail PIGEON! мобильная аська Windows Windows Mobile WM5 WM6 WM6.1 XMPP (JABBER) Книги скачать Книги скачать бесплатно Терри Гудкайнд Первое правило волшебника Скачать Стругацкие Скачть книги бесплатно GTalk messanger для КПК PDA. програ чек Стивен Кинг Темная Башня Остров Русь Ночной дозор Observatory Restaurant Johannesburg Линия грез день рождения деда мороза Vгв ведьмак Самолет хроники амбера The Chronicles of Amber День матери О Нижегородской слободе Lord of Light Бог света Князь света скачать книги бесплатно Апокалипсис в Уфе Жизнь на костях карта Уфы 2gis Дубльгис Робин ХОББ Сага о живых кораблях КОРАБЛЬ СУДЬБЫ Сага о Видящих Рудерман УГАТУ Законы в мире случая имитация демки FLV Warcraft 3 Победа Горит автосервис Забытые королевства Icewind Dale Долина Ледяного ветра Lada Priora Лада приора Ваз ремонт ваз ремонт Navitel карты Navitel Navigator Карта Башкирии карты россии Linux Windows 7 Loader Активатор Windows 7 Активация Windows 7


    SliderSoft © 2017
    Хостинг от uCoz