Уважаемые пользователи. Вопрос для тех кто сталкивался в методами API ВКонтакте по wall_post.
Подскажите как можно в приложении по загрузке фото на стену пользователя сделать чтоб когда приложение запускаешь со стены появлялась не кнопка "Browse image", а фото с альбома?
Пример приложения с открытым исходным кодом: Wall publishing example
Вопрос по WallPost, Фото на стену Вконтакте
Re: Вопрос по WallPost, Фото на стену Вконтакте
Нужно чтобы просто загружалось какое-то фото из альбома? Тогда методы photos.getAlbums и photos.get
Re: Вопрос по WallPost, Фото на стену Вконтакте
Пример: Бабочки на стену
Картинки с фото альбома, загружать на стены. Вот что я имел в виду.
ПОМОГИТЕ!!!
Картинки с фото альбома, загружать на стены. Вот что я имел в виду.
ПОМОГИТЕ!!!
Re: Вопрос по WallPost, Фото на стену Вконтакте
raven009
Метод wall.savePost http://vkontakte.ru/pages.php?o=-1&p=wall.savePost
Не загружать фото на сервер, а передавать параметр photo_id.
Метод wall.savePost http://vkontakte.ru/pages.php?o=-1&p=wall.savePost
Не загружать фото на сервер, а передавать параметр photo_id.
Re: Вопрос по WallPost, Фото на стену Вконтакте
А можно показать это на примере моего кода?
Код: Выделить всё
package vk.wall_post
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.SecurityErrorEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import flash.system.LoaderContext;
import flash.utils.ByteArray;
import flash.text.*;
import vk.api.serialization.json.JSON;
import vk.api.DataProvider;
import vk.ui.*;
public class Main extends Sprite {
public static var FILE_FILTER: Array = ["Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG"];
private var btnBrowse: VKButton;
private var btnInstall: VKButton;
private var uploadButtons: Sprite;
private var file: FileReference;
private var imagePreview: Sprite;
private var resizedImage: Bitmap;
private var dp: DataProvider;
private var uploadUrl: String;
private var wall_id: int;
private var loader: Sprite;
private var wrapper: Object;
private var app: Object;
private var params: Object;
public function Main():void {
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
wrapper = Object(parent.parent);
if (!wrapper.application) {
app = stage;
wall_id = 6492;
params = stage.loaderInfo.parameters;
wrapper = stage;
} else {
app = wrapper.application;
params = app.parameters;
wall_id = params.user_id;
}
this.graphics.beginFill(0xFFFFFF, 1);
this.graphics.drawRect(0, 0, app.stageWidth, app.stageHeight);
this.graphics.endFill();
if (params.referrer == 'wall_view_inline' || params.referrer == 'wall_view') {
var imageLoader: Loader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e: Event): void {
addChild(imageLoader);
imageLoader.x = Math.round((app.stageWidth - imageLoader.width) / 2);
imageLoader.y = 50;
});
imageLoader.load(new URLRequest("http://vkontakte.ru/images/gifts/256/182.jpg"));
return;
}
if (!(params.api_settings & 512+256+4+2)) {
btnInstall = new VKButton("Установите приложение к себе на страницу");
btnInstall.addEventListener(MouseEvent.CLICK, onInstallClick);
wrapper.addEventListener("onApplicationAdded", onAppAdded);
wrapper.addEventListener("onSettingsChanged", onSettingsChanged);
btnInstall.y = 50;
btnInstall.x = Math.round((app.stageWidth - btnInstall.width) / 2);
addChild(btnInstall);
} else {
initForm();
}
}
private function onInstallClick(e: Event): void {
wrapper.external.showInstallBox();
}
private function onAppAdded(e: Object): void {
wrapper.external.showSettingsBox(512+256+128+4+2+1);
}
private function onSettingsChanged(e: Object): void {
params.api_settings = parseInt(e.settings);
if (params.api_settings & 512+64+32) {
removeChild(btnInstall);
initForm();
}
}
private function initForm(): void {
if (String(params.referrer).substr(0, 4) != 'wall') {
var tf: TextField = new TextField();
tf.width = 300;
tf.height = 200;
tf.x = Math.round((app.stageWidth - tf.width) / 2);
tf.y = 50;
tf.embedFonts = false;
var format:TextFormat = new TextFormat();
format.font = "Tahoma";
format.color = 0x000000;
format.size = 13;
tf.autoSize = TextFieldAutoSize.CENTER;
tf.defaultTextFormat = format;
addChild(tf);
tf.appendText("Теперь вы можете запустить это приложение со стены.\n");
return;
}
btnBrowse = new VKButton("Выберите картинку которую хотите загрузить");
btnBrowse.y = 50;
btnBrowse.x = Math.round((app.stageWidth - btnBrowse.width) / 2);
addChild(btnBrowse);
btnBrowse.addEventListener(MouseEvent.CLICK, onBrowseClick);
var btnUpload: VKButton = new VKButton("Загрузить изображение");
btnUpload.addEventListener(MouseEvent.CLICK, onUploadClick);
var btnCancel: VKButton = new VKButton("Закрыть", 2);
btnCancel.x = btnUpload.x + btnUpload.width + 10;
btnCancel.addEventListener(MouseEvent.CLICK, onCancelClick);
uploadButtons = new Sprite();
uploadButtons.addChild(btnUpload);
uploadButtons.addChild(btnCancel);
uploadButtons.x = Math.round((app.stageWidth - uploadButtons.width) / 2);
uploadButtons.y = btnBrowse.y;
uploadButtons.visible = false;
addChild(uploadButtons);
file = new FileReference();
file.addEventListener(Event.SELECT, onFileSelected);
loader = new Sprite();
loader.graphics.beginFill( 0xF7F7F7, 0.3 );
loader.graphics.drawRect( 0, 0, app.stageWidth, app.stageHeight );
loader.graphics.endFill();
var loaderBar: LoaderBar = new LoaderBar();
loaderBar.x = Math.round((app.stageWidth - loaderBar.width) / 2);
loaderBar.y = uploadButtons.y - 25;
loader.addChild(loaderBar);
dp = new DataProvider(params.api_url, id_api, 'x-code', params.viewer_id, true);
dp.setup( { onError: function(error: String): void {
debug("Error: " + error);
}});
dp.request("wall.getPhotoUploadServer", { onComplete: function(response: Object): void {
if (response.upload_url) {
uploadUrl = response.upload_url;
}
}});
}
private function onBrowseClick(e: MouseEvent): void {
file.browse([new FileFilter(FILE_FILTER[0], FILE_FILTER[1])]);
}
private function onFileSelected(e:Event): void {
if (file.size == 0) {
debug("File size is zero bytes");
return;
}
file.addEventListener(Event.COMPLETE, onFileLoaded);
file.load();
}
private function onFileLoaded(e: Event): void {
file.removeEventListener(Event.COMPLETE, onFileLoaded);
// Resample image
var data: ByteArray = ByteArray(e.target.data);
var imgLoader:Loader = new Loader();
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onImageLoadError);
imgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onImageLoadError);
imgLoader.loadBytes(data, new LoaderContext(false));
}
public function onImageLoaded(e: Event): void {
var source: Bitmap = Bitmap(e.target.content);
resizedImage = ImageHelper.resize(source, 200, 300);
source.bitmapData.dispose();
btnBrowse.visible = false;
uploadButtons.visible = true;
if (imagePreview && contains(imagePreview)) {
removeChild(imagePreview);
imagePreview = null;
}
imagePreview = new Sprite();
imagePreview.addChild(resizedImage);
imagePreview.x = Math.round((stage.stageWidth - imagePreview.width) / 2 );
imagePreview.y = uploadButtons.y + uploadButtons.height + 20;
addChild(imagePreview);
}
private function onUploadClick(e:MouseEvent): void {
var urlRequest: URLRequest = new URLRequest();
if (uploadUrl == "") {
debug("Upload URL is empty");
return;
} else {
debug(uploadUrl);
}
urlRequest.url = uploadUrl;
urlRequest.method = URLRequestMethod.POST;
urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
// Configure listeners
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);
file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
file.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
try {
file.upload(urlRequest, 'photo');
showLoader();
} catch (error:Error) {
debug("Upload error");
return;
}
}
private function onCancelClick(e:MouseEvent): void {
showBrowse();
}
private function onUploadComplete(e: DataEvent): void {
debug("Upload complete");
debug('Data: ' + e.data);
showLoader(false);
var data: Object = JSON.decode(e.data);
if (data.photo) {
data.message = 'TESTTEXT.';
data.wall_id = wall_id;
data.post_id = 'post1';
dp.request('wall.savePost', { params: data, onComplete: function(response: Object): void {
debug(response.post_hash);
debug(response.photo_src);
wrapper.external.saveWallPost(response.post_hash);
}} );
}
}
private function showBrowse(): void {
btnBrowse.visible = true;
uploadButtons.visible = false;
if (imagePreview && contains(imagePreview)) {
removeChild(imagePreview);
}
imagePreview = null;
}
private function showLoader(show: Boolean = true): void {
if (contains(loader) && !show) {
removeChild(loader);
} else if (!contains(loader) && show) {
addChild(loader);
}
}
private function onImageLoadError(e: Event): void {
debug("Ошибка загрузке изображений");
showLoader(false);
}
private function onSecurityError(e: SecurityErrorEvent): void {
debug("Ошибка безопасности");
showLoader(false);
}
private function onIOError(e: IOErrorEvent): void {
debug("Ошибка ввода-вывода");
showLoader(false);
}
private function debug(msg: *): void {
trace(debug);
if (wrapper.external)
wrapper.external.debug(msg);
}
}
}
Re: Вопрос по WallPost, Фото на стену Вконтакте
Ну так поможет кто?
Re: Вопрос по WallPost, Фото на стену Вконтакте
Ни кто поагать не хочет ЖАЛЬ))))