Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.04.2014, 15:19
ivaniyses вне форума Посмотреть профиль Отправить личное сообщение для ivaniyses Найти все сообщения от ivaniyses
  № 1  
Ответить с цитированием
ivaniyses
[+1.4 08.02.14]
 
Аватар для ivaniyses

Регистрация: Dec 2013
Адрес: Барабинск
Сообщений: 137
Отправить сообщение для ivaniyses с помощью Skype™
По умолчанию Пример использования wall.savePost

Помогите, поискал на различных ресурсах (В том числе и на флешере), но не нашёл нормального уроки по методу wall.savePost.
__________________
trace("Я нуб");

Старый 06.04.2014, 11:31
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Я для этого написал готовый класс, и использую его во всех прилоениях, где нужен такой функционал
Код AS3:
package  {
	import vk.APIConnection;
	import vk.api.serialization.json.Json;
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.net.URLRequestHeader;
	import flash.net.URLRequestMethod;
	import flash.utils.ByteArray;
	import flash.utils.getTimer;
	import api.com.adobe.images.PNGEncoder;
	import vk.api.MD5;
 
	/**
	 * используется просто, вызовом либо VKPhoto.saveAlbumPhoto() 
	 * либо VKPhoto.saveAlbumPhoto()
	 */
	public class VKPhoto {
 
		private var _vk:					APIConnection 		= null;
		private var _callback:				Function			= null;
		private var _albumID:				String 				= "";
		private var _vkUploadServer:		String 				= null;
		private var _image:					Bitmap				= null;
		private var _albumDescription:		String 				= null;
		private var _albumTitle:			String 				= null;
		private var _onUploadedFunction:	Function			= null;
		private var _message:				String 				= "";
		private var _erCallback:			Function			= null
 
		public function VKPhoto(vk:APIConnection) {
			_vk	= vk;
		}
		/**
		 * 
		 * @param	image картинка, которую нужно сохранить в альбом
		 * @param	vk ссылка на объект APIConnection
		 * @param	callback метод, который будет вызыван после сохранения в альбом 
		 * @param	erCallback метод, вызываемый при ошибке
		 * @param	albumTitle навание для альбома. Если такого альбома не существует, он будет создан
		 * @param	albumDescription описание альбома
		 */
		public static function saveAlbumPhoto(image:Bitmap, vk:APIConnection, callback:Function, 
				erCallback:Function,
				albumTitle:String = "", 
				albumDescription:String = ""):void {	
			var vkPhoto:VKPhoto = new VKPhoto(vk);
			vkPhoto.saveAlbumPhoto(image, callback, erCallback, albumTitle, albumDescription);
 
		}
		/**
		 * @param	image картинка, которую нужно сохранить
		 * @param	vk ссылка на объект APIConnection
		 * @param	callback метод, который будет вызыван после сохранения на стену 
		 * @param	erCallback метод, вызываемый при ошибке
		 * @param	message сообщение, добавляемуе вместе с картинкой
		 */
		public static function saveWallPhoto(image:Bitmap, vk:APIConnection, callback:Function, 
												erCallback:Function, message:String = ""):void {	
			if (!vk) {
				trace("VK IS NULL, VKPhoto.as")
				image.bitmapData.dispose();
				return;
			}
			var vkPhoto:	VKPhoto 	= new VKPhoto(vk);
			vkPhoto.saveWallPhoto(image, callback, erCallback, message);
		}
 
		public function saveAlbumPhoto(image:Bitmap, callback:Function, erCallback:Function,
				albumTitle:String = "", 
				albumDescription:String = ""):void {
			if (_image) {
				if (_image.bitmapData) {
					_image.bitmapData.dispose();
				}
				_image = null;
			}
 
			_image				= image;
			_callback			= callback;
			_erCallback			= erCallback;
			_albumDescription	= albumDescription;
			_albumTitle			= albumTitle;
			_onUploadedFunction	= onVkPhotoUploaded;
 
			if (_callback == null || _image == null || _albumDescription == null) {
				throw new ArgumentError("one of the arguments is null");
			}
			_vk.api("photos.getAlbums", { }, onAlbums, onVkError ); 	
		}
 
		public function saveWallPhoto(image:Bitmap, callback:Function, erCallback:Function, message:String = ""):void {
			_image				= image;
			_callback			= callback;
			_erCallback			= erCallback;
			_message			= message;
			_onUploadedFunction	= onVkWallPhotoUploaded;
			if (_callback == null || _image == null) {
				throw new ArgumentError("one of the arguments is null");
			}
			requestVkWallUploadServer();
 
		}
 
		private function requestVkWallUploadServer():void {											// получение сервера загрузки сообщения на стену
			_vk.api("photos.getWallUploadServer", {}, onVkUploadServer, onVkError);
		}
 
		private function onAlbums(params:Object):void {
			if (params is Array) {
				var arr:Array = params as Array;
			} else {
				arr	= [params];
			}
 
			var albumFound:Boolean = false;
			for (var i:String in arr) {
				if (arr[i].title == _albumTitle) {
					_albumID	= arr[i].aid;
					albumFound	= true;
					break;
				}
			}
			if (albumFound == false) {
				_vk.api("photos.createAlbum", 
					{ 	title: _albumTitle, description: _albumDescription, 
						comment_privacy: 0, privacy: 0 }, 
							onAlbumCreated, onVkError);
			} else {
				requestVkUploadServer();
			}
 
 
 
		}
 
		private function requestVkUploadServer():void {
			_vk.api("photos.getUploadServer", { aid: _albumID }, onVkUploadServer, onVkError);
		}
 
 
		private function onAlbumCreated(params:Object):void {
			_albumID	= params.aid;
			requestVkUploadServer();
		}
 
		private function onVkUploadServer(params:Object):void {
			_vkUploadServer	= params.upload_url;
			uploadVkPhoto();
		}
 
		private function uploadVkPhoto():void {
			if (!_image || !_image.bitmapData) return;
			var imageStream:ByteArray = PNGEncoder.encode(_image.bitmapData);
 
			var stream:ByteArray = new ByteArray();
			var boundary:String = "----------Ij5ae0ae0KM7GI3KM7";
			var imageName:String	= MD5.encrypt(getTimer() + "") + ".png";
			stream.writeUTFBytes("--" + boundary + '\r\nContent-Disposition: form-data; name="file1"; filename="' + imageName + '"\r\nContent-Type: image/png\r\n\r\n');
			stream.writeBytes(imageStream);
			stream.writeUTFBytes("\r\n--" + boundary + '--\r\n');
			var header:URLRequestHeader = new URLRequestHeader ("Content-type", "multipart/form-data; boundary=" + boundary);
			var urlRequest:URLRequest = new URLRequest(_vkUploadServer);
			urlRequest.requestHeaders.push(header);
			urlRequest.method = URLRequestMethod.POST;
			urlRequest.data = stream;
			var urlLoader:URLLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
			urlLoader.addEventListener( Event.COMPLETE, _onUploadedFunction );
			urlLoader.addEventListener( IOErrorEvent.IO_ERROR, photoUploadError );
			try {
				urlLoader.load( urlRequest );
			} catch (e:Error) {
				trace(e.getStackTrace());
			}
			_image.bitmapData.dispose();
			_image	= null;
		}
 
 
 
		private function onVkPhotoUploaded(e:Event):void {
 
			e.target.addEventListener( Event.COMPLETE, _onUploadedFunction );
			e.target.addEventListener( IOErrorEvent.IO_ERROR, photoUploadError );
			var responce:	Object 	= Json.decode(unescape(String(e.target.data)));
			var server:		String 	= responce.server;
			var hash:		String 	= responce.hash;
			var photosList:	String 	= responce.photos_list;
			var aid:		String 	= responce.aid;
			_vk.api("photos.save", { photos_list: photosList, aid: aid, hash: hash, server: server }, 
				onVkPhotoSaved, onVkError );
		}
		private function onVkWallPhotoUploaded(e:Event):void {
			e.target.addEventListener( Event.COMPLETE, _onUploadedFunction );
			e.target.addEventListener( IOErrorEvent.IO_ERROR, photoUploadError );
			var responce:	Object 	= Json.decode(unescape(String(e.target.data)));
			var server:		String 	= responce.server;
			var hash:		String 	= responce.hash;
			var photo:		String 	= responce.photo;
			_vk.api("photos.saveWallPhoto", { photo: photo, hash: hash, server: server }, 
				onWallPhotoSaved, onVkError );
		}
 
		private function onWallPhotoSaved(params:Object):void {								// {"response":[{"pid":304710821,"id":"photo5495786_304710821","aid":-14,"owner_id":5495786,"src":"http:\/\/cs310520.vk.me\/v310520786\/e86\/OmTNZyBed-k.jpg","src_big":"http:\/\/cs310520.vk.me\/v310520786\/e87\/hj5i19qujd0.jpg","src_small":"http:\/\/cs310520.vk.me\/v310520786\/e85\/AydkwTofv-c.jpg","width":338,"height":302,"text":"","created":1371100727}]}
			var imageID:String = params[0].id; 
			//trace("THIS IS IMAGE ID", imageID, "VKPhotoUploader");
			_vk.api("wall.post", {  message: _message, attachments: imageID }, 
							function(o:Object):void { }, function(p:Object):void { } );
			if (_callback != null) {
				_callback.call();
				_callback	= null;
			}
		}
 
 
		private function onVkPhotoSaved(params:Object):void {
			if (_callback != null) {
				_callback.call();
				_callback	= null;
			}
			dispose();
		}
 
		private function photoUploadError(e:IOErrorEvent):void {
			e.target.addEventListener( Event.COMPLETE, _onUploadedFunction );
			e.target.addEventListener( IOErrorEvent.IO_ERROR, photoUploadError );
			if (_erCallback != null) {
				_erCallback.call();
			}
			dispose();
		}
		private function onVkError(param:Object):void { 
			trace(Json.encode(param)); 
			if (_erCallback != null) {
				_erCallback.call();
			}
			dispose();
		}
		private function dispose():void {
			if (_image) {
				_image.bitmapData.dispose();
				_image			= null;
			}
			_callback			= null;
			_erCallback			= null;
			_albumTitle			= null;
			_albumDescription	= null;
			_onUploadedFunction	= null;
			_message			= "";
		}
 
 
 
 
	}
 
}

Старый 31.03.2015, 13:45
пандус вне форума Посмотреть профиль Отправить личное сообщение для пандус Найти все сообщения от пандус
  № 3  
Ответить с цитированием
пандус

Регистрация: Jul 2008
Сообщений: 17
caseyryan, спасибо, выручил.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.