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='Готово'; } }}
3. Подключаем Main.as к fla
Если не знаете как, то посмотрите как это было сделано в этом уроке http://flapps.ru/forum/topic3.html
4. Загружаем приложение в контакт
Редактирование -> Настройки -> Обновление SWF-приложения -> Обзор -> Начать загрузку.
- Если приложение выключено, то включаем
Редактирование -> Настройки -> Состояние -> Приложение включено и видно всем.
- Если выключен контейнер, то включаем
Редактирование -> Настройки -> Flash-контейнер -> Без отступов и элементов управления.
Заходим на страницу приложения. Нажимаем «Настройки». Ставим галочку «Разрешить приложению доступ к Вашим фотографиям».
5. Всё готово!
Исходник http://flapps.ru/example/wall.savePost.rar