Изменяем фотографию в профиле пользователя Вконтакте.

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Ответить
Foxmen
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58

Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение Foxmen »

Загрузка фотографии в профиль пользователя
ApiConnection,AS3.

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

Main.as

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

  package {    import flash.display.*;    import flash.events.*;    import flash.net.FileReference;    import flash.net.URLRequest;    import flash.net.URLRequestHeader;    import flash.net.URLRequestMethod;    import flash.net.FileFilter;    import flash.net.URLLoader;    import vk.api.serialization.json.JSON;    import vk.api.MD5;    import vk.APIConnection;    import vk.events.*;    import vk.ui.*;     public class Main extends Sprite    {          public var urlRequest: URLRequest = new URLRequest();        public var loadphoto:VKButton;//обычная кнопка        public var uploadphoto:VKButton;        private var file:FileReference;//наша фотография, которую выберет пользователь        public var uploadurl:String;        //переменные приложения        public var api_id:Number;        public var viewer_id:Number;        public var sid:String;        public var secret:String;        //получаем flashvars        public var flashVars:Object = stage.loaderInfo.parameters as Object;        //инициализация        public var VK:APIConnection = new APIConnection(flashVars);        //фильтер, который позволит пользователю выбирать только картинки        public var imagesFilter:FileFilter = new FileFilter("Images","*.jpg;*.gif;*.png");        public function Main()        {            //добавляем кнопку на сцену            loadphoto = new VKButton("Выбрать картинку");            loadphoto.x = 213;            loadphoto.y = 149;            addChild(loadphoto);             //делаем кнопку, но пока не добавляем на сцену            uploadphoto = new VKButton("Изменить картинку");            uploadphoto.x = 213;            uploadphoto.y = 149;            uploadphoto.addEventListener(MouseEvent.CLICK, changephoto);             //добавляем событие. как только фотография будет выбрана-будет вызванная функция onFileSelected            file = new FileReference();            file.addEventListener(Event.SELECT, onFileSelected);             //добавляем событие к кнопки            loadphoto.addEventListener(MouseEvent.CLICK, loadphotoo);               //переменные приложения            api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];               //первый этап. получаем http адрес для загрузки фотографии.            VK.api('photos.getProfileUploadServer', {}, getuploadserver, onError);        }         //пользователь выбирает картинку        private function loadphotoo(e:MouseEvent):void        {            file.browse([imagesFilter]);        }         // загружаем фотографию        private function onFileSelected(e:Event):void        {            file.addEventListener(Event.COMPLETE, onFileLoaded);            file.load();        }         //убираем первую кнопку, добавляем вторую        private function onFileLoaded(e:Event):void        {            removeChild(loadphoto);            addChild(uploadphoto);           }          private function getuploadserver(data:Object):void        {            uploadurl = data.upload_url;         }        //второй этап. Делаем пост запрос на полученный адрес        private function changephoto(e:MouseEvent):void        {             urlRequest.url = uploadurl;            urlRequest.method = URLRequestMethod.POST;            urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));            file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);            file.upload(urlRequest, 'photo');            removeChild(uploadphoto);            wait.text = "Пожалуйста, ждите.Фотография загружается";        }          private function onUploadComplete(e:DataEvent):void        {            var responsee:Object = JSON.decode(e.data);             VK.api('photos.saveProfilePhoto', { server: responsee.server,photo:responsee.photo,hash:responsee.hash }, onHashLoaded, onError);            removeChild(uploadphoto);          }        private function onHashLoaded(data:Object):void        {            wait.text = "";             addChild(loadphoto);         }        private function onError(data: Object):void        {            if (data.error_msg == "Operation denied by user")            {                wait.text = "";                 addChild(loadphoto);            }         }       } } 
Создаем fla фаил, добавляем на сцену текстовое поле wait.text и подключаем Main.as
Заливаем В контакт.
Приложение включено и видно всем.
Без использование контейнера.
Конечный результат можно увидеть здесь: http://vkontakte.ru/app2459617_12766930
Влад2597
Сообщения: 65
Зарегистрирован: 21 окт 2010, 13:28

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение Влад2597 »

Кинь лучше исходник
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение Евгений »

Влад2597, зачем исходник!? Вон он выше в виде кода написан...там ничего не нужно кроме текстового поля wait и кода выше))
Dimansel
Сообщения: 1
Зарегистрирован: 18 сен 2011, 18:13

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение Dimansel »

так... а где я возьму папку vk?
ссылочку дайте!
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение psix55 »

Например из этого урока: http://flapps.ru/forum/topic3403.html
Или здесь.
Foxmen
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение Foxmen »

На всякий случай: Main.as, fla фаил и папка vk должны находиться в одной папке.
Аватара пользователя
12funteam89
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34

Re: Изменяем фотографию в профиле пользователя Вконтакте.

Сообщение 12funteam89 »

Переделал ,чтобы код написать в кадре но почему то не получается. Кнопка не появляется.Помогите пожалуйста.

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

  import flash.display.*;    import flash.events.*;    import flash.net.FileReference;    import flash.net.URLRequest;    import flash.net.URLRequestHeader;    import flash.net.URLRequestMethod;    import flash.net.FileFilter;    import flash.net.URLLoader;    import vk.api.serialization.json.JSON;    import vk.api.MD5;    import vk.APIConnection;    import vk.events.*;    import vk.ui.*;           var urlRequest: URLRequest = new URLRequest();        var loadphoto:VKButton;//обычная кнопка      var uploadphoto:VKButton;       var file:FileReference;//наша фотография, которую выберет пользователь      var uploadurl:String;        //переменные приложения     var api_id:Number;       var viewer_id:Number;       var sid:String;       var secret:String;        //получаем flashvars       var flashVars:Object = stage.loaderInfo.parameters as Object;        //инициализация   var VK:APIConnection = new APIConnection(flashVars);        //фильтер, который позволит пользователю выбирать только картинки    var imagesFilter:FileFilter = new FileFilter("Images","*.jpg;*.gif;*.png");      function Main()        {            //добавляем кнопку на сцену            loadphoto = new VKButton("Выбрать картинку");            loadphoto.x = 10;            loadphoto.y = 10;            addChild(loadphoto);             //делаем кнопку, но пока не добавляем на сцену            uploadphoto = new VKButton("Изменить картинку");            uploadphoto.x = 10;            uploadphoto.y = 10;            uploadphoto.addEventListener(MouseEvent.CLICK, changephoto);             //добавляем событие. как только фотография будет выбрана-будет вызванная функция onFileSelected            file = new FileReference();            file.addEventListener(Event.SELECT, onFileSelected);             //добавляем событие к кнопки            loadphoto.addEventListener(MouseEvent.CLICK, loadphotoo);               //переменные приложения            api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];               //первый этап. получаем http адрес для загрузки фотографии.            VK.api('photos.getProfileUploadServer', {}, getuploadserver, onError);        }         //пользователь выбирает картинку         function loadphotoo(e:MouseEvent):void        {            file.browse([imagesFilter]);        }         // загружаем фотографию        function onFileSelected(e:Event):void        {            file.addEventListener(Event.COMPLETE, onFileLoaded);            file.load();        }         //убираем первую кнопку, добавляем вторую        function onFileLoaded(e:Event):void        {            removeChild(loadphoto);            addChild(uploadphoto);           }        function getuploadserver(data:Object):void        {            uploadurl = data.upload_url;         }        //второй этап. Делаем пост запрос на полученный адрес     function changephoto(e:MouseEvent):void        {             urlRequest.url = uploadurl;            urlRequest.method = URLRequestMethod.POST;            urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));            file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);            file.upload(urlRequest, 'photo');            removeChild(uploadphoto);            wait.text = "Пожалуйста, ждите.Фотография загружается";        }        function onUploadComplete(e:DataEvent):void        {            var responsee:Object = JSON.decode(e.data);             VK.api('photos.saveProfilePhoto', { server: responsee.server,photo:responsee.photo,hash:responsee.hash }, onHashLoaded, onError);            removeChild(uploadphoto);          }       function onHashLoaded(data:Object):void        {            wait.text = "";             addChild(loadphoto);         }        function onError(data: Object):void        {            if (data.error_msg == "Operation denied by user")            {                wait.text = "";                 addChild(loadphoto);            }         } 
Ответить