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

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!

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

Сообщение Foxmen » 03 сен 2011, 10:01

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

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

Main.as
  1.  
  2.  
  3. package
  4. {
  5.     import flash.display.*;
  6.     import flash.events.*;
  7.     import flash.net.FileReference;
  8.     import flash.net.URLRequest;
  9.     import flash.net.URLRequestHeader;
  10.     import flash.net.URLRequestMethod;
  11.     import flash.net.FileFilter;
  12.     import flash.net.URLLoader;
  13.     import vk.api.serialization.json.JSON;
  14.     import vk.api.MD5;
  15.     import vk.APIConnection;
  16.     import vk.events.*;
  17.     import vk.ui.*;
  18.  
  19.     public class Main extends Sprite
  20.     {
  21.  
  22.  
  23.         public var urlRequest: URLRequest = new URLRequest();
  24.         public var loadphoto:VKButton;//обычная кнопка
  25.         public var uploadphoto:VKButton;
  26.         private var file:FileReference;//наша фотография, которую выберет пользователь
  27.         public var uploadurl:String;
  28.         //переменные приложения
  29.         public var api_id:Number;
  30.         public var viewer_id:Number;
  31.         public var sid:String;
  32.         public var secret:String;
  33.         //получаем flashvars
  34.         public var flashVars:Object = stage.loaderInfo.parameters as Object;
  35.         //инициализация
  36.         public var VK:APIConnection = new APIConnection(flashVars);
  37.         //фильтер, который позволит пользователю выбирать только картинки
  38.         public var imagesFilter:FileFilter = new FileFilter("Images","*.jpg;*.gif;*.png");
  39.         public function Main()
  40.         {
  41.             //добавляем кнопку на сцену
  42.             loadphoto = new VKButton("Выбрать картинку");
  43.             loadphoto.x = 213;
  44.             loadphoto.y = 149;
  45.             addChild(loadphoto);
  46.  
  47.             //делаем кнопку, но пока не добавляем на сцену
  48.             uploadphoto = new VKButton("Изменить картинку");
  49.             uploadphoto.x = 213;
  50.             uploadphoto.y = 149;
  51.             uploadphoto.addEventListener(MouseEvent.CLICK, changephoto);
  52.  
  53.             //добавляем событие. как только фотография будет выбрана-будет вызванная функция onFileSelected
  54.             file = new FileReference();
  55.             file.addEventListener(Event.SELECT, onFileSelected);
  56.  
  57.             //добавляем событие к кнопки
  58.             loadphoto.addEventListener(MouseEvent.CLICK, loadphotoo);
  59.  
  60.  
  61.  
  62.             //переменные приложения
  63.             api_id = flashVars['api_id'];
  64.             viewer_id = flashVars['viewer_id'];
  65.             sid = flashVars['sid'];
  66.             secret = flashVars['secret'];
  67.  
  68.  
  69.  
  70.             //первый этап. получаем http адрес для загрузки фотографии.
  71.             VK.api('photos.getProfileUploadServer', {}, getuploadserver, onError);
  72.         }
  73.  
  74.         //пользователь выбирает картинку
  75.         private function loadphotoo(e:MouseEvent):void
  76.         {
  77.             file.browse([imagesFilter]);
  78.         }
  79.  
  80.         // загружаем фотографию
  81.         private function onFileSelected(e:Event):void
  82.         {
  83.             file.addEventListener(Event.COMPLETE, onFileLoaded);
  84.             file.load();
  85.         }
  86.  
  87.         //убираем первую кнопку, добавляем вторую
  88.         private function onFileLoaded(e:Event):void
  89.         {
  90.             removeChild(loadphoto);
  91.             addChild(uploadphoto);
  92.  
  93.  
  94.  
  95.         }
  96.  
  97.  
  98.         private function getuploadserver(data:Object):void
  99.         {
  100.             uploadurl = data.upload_url;
  101.  
  102.         }
  103.         //второй этап. Делаем пост запрос на полученный адрес
  104.         private function changephoto(e:MouseEvent):void
  105.         {
  106.  
  107.             urlRequest.url = uploadurl;
  108.             urlRequest.method = URLRequestMethod.POST;
  109.             urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
  110.             file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);
  111.             file.upload(urlRequest, 'photo');
  112.             removeChild(uploadphoto);
  113.             wait.text = "Пожалуйста, ждите.Фотография загружается";
  114.         }
  115.  
  116.  
  117.         private function onUploadComplete(e:DataEvent):void
  118.         {
  119.             var responsee:Object = JSON.decode(e.data);
  120.  
  121.             VK.api('photos.saveProfilePhoto', { server: responsee.server,photo:responsee.photo,hash:responsee.hash }, onHashLoaded, onError);
  122.             removeChild(uploadphoto);
  123.  
  124.  
  125.         }
  126.         private function onHashLoaded(data:Object):void
  127.         {
  128.             wait.text = "";
  129.  
  130.             addChild(loadphoto);
  131.  
  132.         }
  133.         private function onError(data: Object):void
  134.         {
  135.             if (data.error_msg == "Operation denied by user")
  136.             {
  137.                 wait.text = "";
  138.  
  139.                 addChild(loadphoto);
  140.             }
  141.  
  142.         }
  143.  
  144.  
  145.  
  146.     }
  147.  
  148. }
  149.  


Создаем fla фаил, добавляем на сцену текстовое поле wait.text и подключаем Main.as
Заливаем В контакт.
Приложение включено и видно всем.
Без использование контейнера.
Конечный результат можно увидеть здесь: http://vkontakte.ru/app2459617_12766930

За это сообщение автора Foxmen поблагодарили - 2:
Александр, 112
Foxmen

 
Автор темы
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Влад2597 » 07 сен 2011, 14:46

Кинь лучше исходник

За это сообщение автора Влад2597 поблагодарил:
danila21122
Влад2597

 
Сообщения: 65
Зарегистрирован: 21 окт 2010, 13:28
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.

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

Сообщение Евгений » 07 сен 2011, 14:54

Влад2597, зачем исходник!? Вон он выше в виде кода написан...там ничего не нужно кроме текстового поля wait и кода выше))
Пока они пили водку и катались на скейтах, мы строили бизнес и делали деньги!)
Аватара пользователя
Евгений
FL Team
FL Team
 
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01
Откуда: Новосибирск
Благодарил (а): 65 раз.
Поблагодарили: 35 раз.

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

Сообщение Dimansel » 18 сен 2011, 18:15

так... а где я возьму папку vk?
ссылочку дайте!
Dimansel

 
Сообщения: 1
Зарегистрирован: 18 сен 2011, 18:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение psix55 » 18 сен 2011, 18:24

Например из этого урока: topic3403.html
Или здесь.
Если хочешь помочь голодному, не давай ему рыбы, дай ему удочку.
Аватара пользователя
psix55
Модератор
Модератор
 
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16
Благодарил (а): 17 раз.
Поблагодарили: 74 раз.

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

Сообщение Foxmen » 18 сен 2011, 21:11

На всякий случай: Main.as, fla фаил и папка vk должны находиться в одной папке.
Foxmen

 
Автор темы
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

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

Сообщение 12funteam89 » 04 окт 2011, 17:30

Переделал ,чтобы код написать в кадре но почему то не получается. Кнопка не появляется.Помогите пожалуйста.
  1.  
  2.  import flash.display.*;
  3.     import flash.events.*;
  4.     import flash.net.FileReference;
  5.     import flash.net.URLRequest;
  6.     import flash.net.URLRequestHeader;
  7.     import flash.net.URLRequestMethod;
  8.     import flash.net.FileFilter;
  9.     import flash.net.URLLoader;
  10.     import vk.api.serialization.json.JSON;
  11.     import vk.api.MD5;
  12.     import vk.APIConnection;
  13.     import vk.events.*;
  14.     import vk.ui.*;
  15.  
  16.    
  17.  
  18.  
  19.      var urlRequest: URLRequest = new URLRequest();
  20.         var loadphoto:VKButton;//обычная кнопка
  21.       var uploadphoto:VKButton;
  22.        var file:FileReference;//наша фотография, которую выберет пользователь
  23.       var uploadurl:String;
  24.         //переменные приложения
  25.      var api_id:Number;
  26.        var viewer_id:Number;
  27.        var sid:String;
  28.        var secret:String;
  29.         //получаем flashvars
  30.        var flashVars:Object = stage.loaderInfo.parameters as Object;
  31.         //инициализация
  32.    var VK:APIConnection = new APIConnection(flashVars);
  33.         //фильтер, который позволит пользователю выбирать только картинки
  34.     var imagesFilter:FileFilter = new FileFilter("Images","*.jpg;*.gif;*.png");
  35.       function Main()
  36.         {
  37.             //добавляем кнопку на сцену
  38.             loadphoto = new VKButton("Выбрать картинку");
  39.             loadphoto.x = 10;
  40.             loadphoto.y = 10;
  41.             addChild(loadphoto);
  42.  
  43.             //делаем кнопку, но пока не добавляем на сцену
  44.             uploadphoto = new VKButton("Изменить картинку");
  45.             uploadphoto.x = 10;
  46.             uploadphoto.y = 10;
  47.             uploadphoto.addEventListener(MouseEvent.CLICK, changephoto);
  48.  
  49.             //добавляем событие. как только фотография будет выбрана-будет вызванная функция onFileSelected
  50.             file = new FileReference();
  51.             file.addEventListener(Event.SELECT, onFileSelected);
  52.  
  53.             //добавляем событие к кнопки
  54.             loadphoto.addEventListener(MouseEvent.CLICK, loadphotoo);
  55.  
  56.  
  57.  
  58.             //переменные приложения
  59.             api_id = flashVars['api_id'];
  60.             viewer_id = flashVars['viewer_id'];
  61.             sid = flashVars['sid'];
  62.             secret = flashVars['secret'];
  63.  
  64.  
  65.  
  66.             //первый этап. получаем http адрес для загрузки фотографии.
  67.             VK.api('photos.getProfileUploadServer', {}, getuploadserver, onError);
  68.         }
  69.  
  70.         //пользователь выбирает картинку
  71.          function loadphotoo(e:MouseEvent):void
  72.         {
  73.             file.browse([imagesFilter]);
  74.         }
  75.  
  76.         // загружаем фотографию
  77.         function onFileSelected(e:Event):void
  78.         {
  79.             file.addEventListener(Event.COMPLETE, onFileLoaded);
  80.             file.load();
  81.         }
  82.  
  83.         //убираем первую кнопку, добавляем вторую
  84.         function onFileLoaded(e:Event):void
  85.         {
  86.             removeChild(loadphoto);
  87.             addChild(uploadphoto);
  88.  
  89.  
  90.  
  91.         }
  92.  
  93.  
  94.       function getuploadserver(data:Object):void
  95.         {
  96.             uploadurl = data.upload_url;
  97.  
  98.         }
  99.         //второй этап. Делаем пост запрос на полученный адрес
  100.      function changephoto(e:MouseEvent):void
  101.         {
  102.  
  103.             urlRequest.url = uploadurl;
  104.             urlRequest.method = URLRequestMethod.POST;
  105.             urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
  106.             file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);
  107.             file.upload(urlRequest, 'photo');
  108.             removeChild(uploadphoto);
  109.             wait.text = "Пожалуйста, ждите.Фотография загружается";
  110.         }
  111.  
  112.  
  113.       function onUploadComplete(e:DataEvent):void
  114.         {
  115.             var responsee:Object = JSON.decode(e.data);
  116.  
  117.             VK.api('photos.saveProfilePhoto', { server: responsee.server,photo:responsee.photo,hash:responsee.hash }, onHashLoaded, onError);
  118.             removeChild(uploadphoto);
  119.  
  120.  
  121.         }
  122.        function onHashLoaded(data:Object):void
  123.         {
  124.             wait.text = "";
  125.  
  126.             addChild(loadphoto);
  127.  
  128.         }
  129.         function onError(data: Object):void
  130.         {
  131.             if (data.error_msg == "Operation denied by user")
  132.             {
  133.                 wait.text = "";
  134.  
  135.                 addChild(loadphoto);
  136.             }
  137.  
  138.         }
  139.  
Изображение
Аватара пользователя
12funteam89

 
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34
Откуда: Санкт-Петербург
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.


Вернуться в Уроки по использованию ВКонтакте API



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0