Re: Публикации картинок с сервера на стену (wall.savePost)
Добавлено: 16 июн 2010, 22:18
Форум о создании приложений
https://flapps.ru/forum/
Александр писал(а):Salty
Но логичнее будет сделать функцию, которой будут передаваться параметры post_id, photo_id, post_message.Код: Выделить всё
send1.addEventListener(MouseEvent.CLICK, send1Click);send2.addEventListener(MouseEvent.CLICK, send2Click); function send1Click(e: MouseEvent):void { var to_id=int(to_id_tf.text); var post_id='post1'; 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); } function send2Click(e: MouseEvent):void { var to_id=int(to_id_tf.text); var post_id='post2'; var photo_id='6492_135055734';// здесь пиши другой photo_id 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); } function photoPosted(event:Event):void { var response:XML=new XML(url_loader.data); // сохраняем запись на стене пользователя wrapper.external.saveWallPost(response.post_hash); result_tf.text='Готово'; }
Код: Выделить всё
// если приложение открыто со стены 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 передаётся в запросе ниже }Код: Выделить всё
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=1902406;// ID приложения private var api_secret:String="095FdVmnV3";// секретный ключ 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='36375408_173935757';// идентификатор фотографии, загруженной в фотоальбоме 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='Готово'; } }}/* */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=1902406;// ID приложения private var api_secret:String="095FdVmnV3";// секретный ключ 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_tl.text='Здесь вы можете считать post_id и загрузить большое изображение.\n' + 'post_id=' + wrapper.application.parameters.post_id; // post_id передаётся в запросе ниже } lend_btn.addEventListener(MouseEvent.CLICK, lend_btnClick); viewer_id=wrapper.application.parameters.viewer_id; to_id_tl.text=viewer_id; } public function lend_btnClick(e: MouseEvent):void { // создаем и выполняем запрос api=new VkApiNode(viewer_id,api_id,api_secret); // отправляем запрос ('стена пользователяь которому будет отправлено фото (id)', 'photo_id', 'Сообщение') var to_id=int(to_id_tl.text); // id пользователя, на стену которого будет отправляться фото var post_id='post1';// id записи. Этот параметр будет передаваться в приложение через flashVars при просмотре или создании записи на стене пользователя. var photo_id='36375408_174069942';// идентификатор фотографии, загруженной в фотоальбоме 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_tl.text='Готово'; } }}Узнай на какую строчку компилятор ругается.ТимурНН писал(а): Сделал как описано здесь получил ошибку: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at MethodInfo-76()
Подскажите пожалуйста как решить данную проблему
P.S. данный кусок кода вставил после строк:это верно?Код: Выделить всё
// если приложение открыто со стены 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 передаётся в запросе ниже }
Извиняюсь за наверное глупые вопросы, но я новичок и потому некоторые ошибки повергают меня шок
Так и не понятно: создается приложением или нужно указывать самому? Пробую указать сам, пробую не указывать. При любом раскладе у меня во flashvars при открытии поста со стены возвращается пустой post_id. Как так?Александр писал(а):egor_pe4kin
Если об этом:То этот post_id создаётся приложением. Его нужно указывать самому.Код: Выделить всё
var post_id:String='post1';
Загрузка изображения на стену пользователя
Загрузка изображения на стену пользователя ВКонтакте осуществляется приложением в 4 этапа:
1. С помощью метода wall.getPhotoUploadServer приложение узнает http-адрес для загрузки фотографий.
2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен содержать поле photo, которое содержит файл с изображением (JPG, PNG, BMP или GIF).
В ответ приложение получает следующие данные в формате JSON:
{"server": '1', "photos": '1', "hash": '12345abcde'}
3. С помощью метода wall.savePost приложение передает серверу полученные данные (server, photo и hash) и получает данные о загруженном изображении, в том числе post_hash.
4. С помощью вызова функции saveWallPost Flash-контейнера с параметром post_hash, полученном в п.3, приложение может сохранить изображение с дополнительным текстом на стене пользователя.
Код: Выделить всё
wrapper.application.parameters.post_id;