Публикации картинок с сервера на стену (wall.savePost)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Публикации картинок с сервера на стену (wall.savePost)

Сообщение Александр »

Публикации картинок с сервера на стену (методы wall.savePost, saveWallPost)
ActionScript 3.0 (Adobe Flash CS4)

Урок для версии ВКонтакте API 3.0 - Отправить фотографию на стену пользователя (wall.savePost)

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

Для работы с методами Вконтакте API используется изменённая мною библиотека VkApi. Находится в архиве с исходником.


Описание метода wall.savePost

Сохраняет запись на стене пользователя. Запись может содержать фотографию, ранее загруженную на сервер ВКонтакте или любую доступную фотографию из альбома пользователя.

Параметры
wall_id - id пользователя, на стене которого размещается запись.
post_id- id записи, содержащий символы от a до z и от 0 до 9. Этот параметр будет передаваться в приложение через flashVars при просмотре или создании записи на стене пользователя.
server - параметр, возвращаемый в результате загрузки изображения на сервер.
photo - параметр, возвращаемый в результате загрузки изображения на сервер.
hash - параметр, возвращаемый в результате загрузки изображения на сервер.
photo_id - идентификатор фотографии, который представляет собой идущие через знак подчеркивания id пользователя, разместившего фотографию, и id самой фотографии. Пример значения photo_id: 6492_135055734
message - текст сообщения для размещения на стене пользователя.

При вызове этого метода должны быть определены параметры server, photo и hash или параметр photo_id. В случае, если эти параметры не будут переданы, будет возвращена ошибка.

Метод возвращает объект, содержащий поля post_hash и photo_src. Параметр post_hash необходим для вызова метода saveWallPost Flash-контейнера. Поле photo_src содержит путь к загруженной фотографии.


При запуске со стены приложение открывается в окне размером 607x412, и ему передаются параметры:
referrer – содержит строку с информацией о том, откуда было запущено приложение (см. список значений ниже).
poster_id – это id пользователя, разместившего запись на стене.
post_id – это id сохраненной на стене записи.
Параметры poster_id и post_id передаются только в том случае, если referrer имеет значения wall_view или wall_view_inline.

Параметр referrer может принимать следующие значения:
menu – если приложение запущено в результате перехода через левое меню.
wall_post_inline – если приложение запущено через меню публикации новой записи на стене.
wall_post – если приложение запущено через меню публикации новой записи на стене и развернуто в новом окне.
wall_view_inline – если приложение запущено со стены пользователя для просмотра ранее размещенной записи.
wall_view – если приложение запущено со стены пользователя для просмотра ранее размещенной записи и развернуто в новом окне.



Создание приложения

1. Добавляем на сцену:
Текстовые поля с именами:
- to_id_tf (поле ввода id того, кому будет отправляться фото)
- result_tf (поле, в котором будет выводиться результат)

Кнопку send_btn.


2. Создаём Main.as и пишем код:

Код: Выделить всё

/*     http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;     public class Main extends Sprite {        private var api_id:Number=1727522;// ID приложения        private var api_secret:String="1gqE8m34rb";// секретный ключ        private var api:VkApiNode;        private var viewer_id;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;        private var wrapper:Object;         public function Main():void {            this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );        }         public function onAddedToStage(e: Event):void {            wrapper=Object(parent.parent);             // если приложение открыто со стены            if (wrapper.application.parameters.referrer=='wall_view_inline'||wrapper.application.parameters.referrer=='wall_view') {                result_tf.text='Здесь вы можете считать post_id и загрузить большое изображение.\n' +                 'post_id=' + wrapper.application.parameters.post_id; // post_id передаётся в запросе ниже            }             send_btn.addEventListener(MouseEvent.CLICK, send_btnClick);            viewer_id=wrapper.application.parameters.viewer_id;            to_id_tf.text=viewer_id;        }         public function send_btnClick(e: MouseEvent):void {            // создаем и выполняем запрос            api=new VkApiNode(viewer_id,api_id,api_secret);            // отправляем запрос ('стена пользователя, которому будет отправлено фото (id)', 'photo_id', 'Сообщение')            var to_id=int(to_id_tf.text); // id пользователя, на стену которого будет отправляться фото            var post_id='post1';// id записи. Этот параметр будет передаваться в приложение через flashVars при просмотре или создании записи на стене пользователя.            var photo_id='6492_135055734';//  идентификатор фотографии, загруженной в фотоальбоме            var post_message='Сообщение';            query=api.savePost(to_id,post_id,photo_id,post_message);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,photoPosted);            url_loader.load(url_request);        }         public function photoPosted(event:Event):void {            var response:XML=new XML(url_loader.data);            // сохраняем запись на стене пользователя            wrapper.external.saveWallPost(response.post_hash);            result_tf.text='Готово';        }    }}
Заменяем app_id и api_secret на свои данные.


3. Подключаем Main.as к fla
Если не знаете как, то посмотрите как это было сделано в этом уроке http://flapps.ru/forum/topic3.html


4. Загружаем приложение в контакт
Редактирование -> Настройки -> Обновление SWF-приложения -> Обзор -> Начать загрузку.

- Если приложение выключено, то включаем
Редактирование -> Настройки -> Состояние -> Приложение включено и видно всем.

- Если выключен контейнер, то включаем
Редактирование -> Настройки -> Flash-контейнер -> Без отступов и элементов управления.

Заходим на страницу приложения. Нажимаем «Настройки». Ставим галочку «Разрешить приложению доступ к Вашим фотографиям».

5. Всё готово!

Исходник http://flapps.ru/example/wall.savePost.rar
DENISSISS
Сообщения: 7
Зарегистрирован: 02 янв 2010, 20:30

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение DENISSISS »

я первый!

---
Хорошо, что подписался на рассылку!!! Урок кстати супер! :)
uber
Сообщения: 11
Зарегистрирован: 07 апр 2010, 14:06

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение uber »

Круто спасибо)
uber
Сообщения: 11
Зарегистрирован: 07 апр 2010, 14:06

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение uber »

Пишет "Запись не может быть добавлена на стену по неизвестной причине." фак что-то тут не так?
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение revizor »

Александр приложение отправляет фото из альбома открывшего приложение пользователя а как сделать чтобы альбом был фиксированный или несколько моих (тематических) альбомов ?)
зарание спасибо )
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение Александр »

uber
Всё так как в пункте 4?

revizor
Не из альбома просматривающего, а из альбома пользователя id6492.

Код: Выделить всё

var photo_id='6492_135055734';
6492_135055734 - это адрес фотографии, можно увидеть в адресной строке, когда просматриваешь фотографию в альбоме.
Если делать приложение с большим количеством фотографий, тогда нужно добавлять адреса всех фотографий вручную или использовать методы api для работы с фотоальбомами.
uber
Сообщения: 11
Зарегистрирован: 07 апр 2010, 14:06

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение uber »

Александр писал(а):uber
Всё так как в пункте 4?

revizor
Не из альбома просматривающего, а из альбома пользователя id6492.

Код: Выделить всё

var photo_id='6492_135055734';
6492_135055734 - это адрес фотографии, можно увидеть в адресной строке, когда просматриваешь фотографию в альбоме.
Если делать приложение с большим количеством фотографий, тогда нужно добавлять адреса всех фотографий вручную или использовать методы api для работы с фотоальбомами.
Хм, Да все делал по порядку)
Marik
FL Team
FL Team
Сообщения: 27
Зарегистрирован: 18 янв 2010, 21:41

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение Marik »

круто, спасибо! ;)
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение revizor »

Александр писал(а):uber
Всё так как в пункте 4?

revizor
Не из альбома просматривающего, а из альбома пользователя id6492.

Код: Выделить всё

var photo_id='6492_135055734';
6492_135055734 - это адрес фотографии, можно увидеть в адресной строке, когда просматриваешь фотографию в альбоме.
Если делать приложение с большим количеством фотографий, тогда нужно добавлять адреса всех фотографий ВРУЧНУЮ .
если список в ручную то var photo_id=''6492_135055734' '6492_135055735' '6492_1350557nnn'и т.д ?
или каждое фото новая переменная ?
шас пробовал делать неизвестную ошибку выдает из ващего примера и если по уроку делаю сам
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Публикации картинок с сервера на стену (wall.savePost)

Сообщение psix55 »

я очень рад что Александр выложил не законченный исходник (имеется ввиду его надо доделать!) (там нет input поля для ввода сообщения и т.д) потому, что если бы он выложил законченный исходник, то никто бы не додумывал его, а просто вставил бы в своё приложение!
Спасибо!
Ответить