размещение фото пользователя и фото друзей в приложении

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

размещение фото пользователя и фото друзей в приложении

Сообщение agni »

следующий код работает, информацию о друзьях получает, но фото выводит только одно: любого из списка
подскажите, пожалуйста, что поправить:

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

        public function menu():void        {            if (stage)            {                init();            }            else            {                addEventListener(Event.ADDED_TO_STAGE,init);            }        }         function init(e:Event=null):void        {            var flashVars:Object = stage.loaderInfo.parameters as Object;            api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];            var VK:APIConnection = new APIConnection(flashVars);            VK.api('getProfiles',{uids:flashVars['viewer_id'],fields:'photo_medium'},onProfileLoaded,onError);            VK.api('friends.getAppUsers',{},onFriendsLoaded,onError);                     function onFriendsLoaded(data:Object):void            {                for (var i:int = 0; i < data.length; i++)                {                    var uid_friend:int = new int  ;                    uid_friend = data[i];                    VK.api('getProfiles',{uids:uid_friend,fields:'photo_medium'},onFriendLoaded,onError);                }            }        }         private function onProfileLoaded(data:Object):void        {            fio_txt.text = data[0]['first_name'] + ' ' + data[0]['last_name'];            var url:URLRequest = new URLRequest(data[0]['photo_medium']);            loader.load(url);            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded);        }               private function onLoaded(e:Event):void        {            addChild(loader);        }         private function onFriendLoaded(data:Object):void        {            var url:URLRequest = new URLRequest(data[0]['photo_medium']);            loader2.load(url);            loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded2);        }         private function onLoaded2(e:Event):void        {            loader2.x = 65 * ii;//в заголовке объявлено: var ii:int = 0;            loader2.y = 0;            addChild(loader2);            ii++;        } 
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: размещение фото пользователя и фото друзей в приложении

Сообщение agni »

следующий код (без фото пользователя - только фото друзей) тоже показывает только одну фото:

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

        public function menu():void        {            if (stage)            {                init();            }            else            {                addEventListener(Event.ADDED_TO_STAGE,init);            }        }         function init(e:Event=null):void        {            var flashVars:Object = stage.loaderInfo.parameters as Object;            api_id = flashVars['api_id'];            viewer_id = flashVars['viewer_id'];            sid = flashVars['sid'];            secret = flashVars['secret'];            var VK:APIConnection = new APIConnection(flashVars);            VK.api('friends.getAppUsers',{},onFriendsLoaded,onError);                     function onFriendsLoaded(data:Object):void            {                for (var i:int = 0; i < data.length; i++)                {                    var uid_friend:int = new int  ;                    uid_friend = data[i];                    VK.api('getProfiles',{uids:uid_friend,fields:'photo_medium'},onFriendLoaded,onError);                }            }        }         private function onFriendLoaded(data:Object):void        {            var url:URLRequest = new URLRequest(data[0]['photo_medium']);            loader2.load(url);            loader2.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded2);        }         private function onLoaded2(e:Event):void        {            loader2.x = 65 * ii;//в заголовке объявлено: var ii:int = 0;            loader2.y = 0;            addChild(loader2);            ii++;        } 
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: размещение фото пользователя и фото друзей в приложении

Сообщение sanych_dv »

В функции onFriendsLoaded вы вызываете метод getProfiles в цикле, зачем? Достаточно одного обращения к API.

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

 function onFriendsLoaded(_data:Object):void            {                    VK.api('getProfiles',{uids:_data, fields:'photo_medium'}, onFriendsPhotosLoaded,onError);            } 
Здесь вообще запросы в одном execute можно попробовать сделать.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: размещение фото пользователя и фото друзей в приложении

Сообщение agni »

sanych_dv писал(а):
 
В функции onFriendsLoaded вы вызываете метод getProfiles в цикле, зачем? Достаточно одного обращения к API.

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

 function onFriendsLoaded(_data:Object):void            {                    VK.api('getProfiles',{uids:_data, fields:'photo_medium'}, onFriendsPhotosLoaded,onError);            } 
Здесь вообще запросы в одном execute можно попробовать сделать.
что такое _data? компилятор не понимает
мой код не работает из-за использования цикла?
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: размещение фото пользователя и фото друзей в приложении

Сообщение sanych_dv »

Какой компилятор не понимает? Какая разница, какое имя у эвента?
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: размещение фото пользователя и фото друзей в приложении

Сообщение gaponj88 »

agni
что такое _data? компилятор не понимает
мой код не работает из-за использования цикла?
Походу это ты не понимаешь ,что в uids засовываешь!
У тебя изначально uid_friend было.
Посмотри простые уроки испоьзования метода getProfiles,и все поймешь.
На счет цикла:Если у тебя метод будет находится в цикле,а в uid_friend будет 100 айдишников,то у тебя метод getProfiles
сработает 101 раз!ГОВНОКОД короче.

а если тебе надо не одно фото,ты ведь цикл и делаешь,то измени:

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

var url:URLRequest = new URLRequest(data[0]['photo_medium']);//вот здесь на data[i]['photo_medium']
           
           
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург

Re: размещение фото пользователя и фото друзей в приложении

Сообщение Александр »

agni писал(а):мой код не работает из-за использования цикла?
Есть ограничение в 3 обращения к api в секунду. В цикле их может быть значительно больше, тогда сервер api будет писать ошибку о том что слишком много запросов. Обращение к api с таким запросом не логично и не будет корректно работать. Собери id всех пользователей, потом один раз отправь их серверу api.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: размещение фото пользователя и фото друзей в приложении

Сообщение agni »

подскажите, пожалуйста, возможно ли составить такой запрос при помощи APIConnection?
пробовал:

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

VK.api('getProfiles',{uids:data,fields:'photo_medium_rec'},onFriendLoaded,onError); 
, но выдает "Incorrect signature: sid & secret authorization"
судя по чарли - происходит оттого, что посылает несколько строк uids, а не одной строкой, через запятую

Изображение

какой должен быть синтаксис, чтобы uids шли одной строкой?
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: размещение фото пользователя и фото друзей в приложении

Сообщение agni »

пока нашел выход посылать строку, но видимо есть более приемлемое решение

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

            var wall_string:String=data[0]+','+data[1];                VK.api('getProfiles',{uids:wall_string,fields:'photo_medium_rec'},onFriendLoaded,onError); 
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: размещение фото пользователя и фото друзей в приложении

Сообщение gaponj88 »

agni
Что ты хочешь,получить друзей и их фото?
Ответить