Вывод списка друзей в приложении (getFriends и getProfiles)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение VITAL »

Вродибы я сделал не так не судите строго

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

package {
   import flash.net.*;
   import flash.display.*;
   import flash.events.*;
   import flash.text.*;
   import vk.VkApiNode;

   public class Main extends Sprite {
      private var api_id:Number=*********;
      private var api_secret:String="************";// секретный ключ
      private var api:VkApiNode;
      private var viewer_id;
      private var server_url;
      private var url_loader:URLLoader;
      private var url_request:URLRequest;
      private var query:String;

      public function Main():void {
         viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;
         // определяем адрес сервиса API (vkontakte.ru или vk.com)
         server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';
         
         // создаем и выполняем запрос
         api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);
         query=api.getAppFriends();
         url_request=new URLRequest(query);
         url_loader=new URLLoader  ;
         url_loader.addEventListener(Event.COMPLETE,friendsLoaded);
         url_loader.load(url_request);
      }

      public function friendsLoaded(event:Event):void {
         // обрабатываем полученный ответ
         var responseFriends:XML=new XML(url_loader.data);
         if (responseFriends.error_code!=7) {// если доступ к списку друзей разрешен в настройках приложения
            // создаём массив ID друзей
            var all_friends:Array=new Array  ;
            for each (var fid:XML in responseFriends.*) {
               all_friends.push(fid);
            }
            // получаем профили друзей, используя метод getProfiles
            // ПРИМЕЧАНИЕ! Если друзей более 1000, то этот запрос нужно будет поделить на части, из-за ограничений метода getProfiles
            var fields:Array=new Array  ;
            fields=['first_name,last_name,photo_big'];// перечисленные через запятую поля, необходимые для получения
            getProfiles(all_friends,fields);
         } else {
            friends_tf.text='Нет доступа к списку друзей';
         }
      }

      public function getProfiles(uids:Array,fields:Array):void { // функция получения профилей
         query=api.getProfiles(uids,fields);
         url_request=new URLRequest(query);
         url_loader=new URLLoader  ;
         url_loader.addEventListener(Event.COMPLETE,profilesLoaded);
         url_loader.load(url_request);
      }

      public function profilesLoaded(event:Event):void {
         // обрабатываем и выводим список друзей в виде "Имя Фамилия" (ссылка)
         var responseFriendsProfiles:XML=new XML(url_loader.data);
         var friends='';
         for each (var user:XML in responseFriendsProfiles.*) {
            friends=friends+'<a href="http://vkontakte.ru/id'+user.uid+'">'+user.first_name+' '+user.last_name+'</a><br />';
         }
         friends_tf.htmlText=friends;
      }
   }
}

Что нужно убрать и добавить сдесь

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

package {
   import flash.net.*;
   import flash.display.*;
   import flash.events.*;
   import flash.text.*;
   import vk.VkApiNode;

   public class Main extends Sprite {
      private var api_id:Number=1728947;// id вашего приложения
      private var api_secret:String="3wRTB1OZo9";// секретный ключ
      private var api:VkApiNode;
      private var viewer_id;
      private var server_url;
      private var url_loader:URLLoader;
      private var url_request:URLRequest;
      private var query:String;

      public function Main():void {
         viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;
         // определяем адрес сервиса API (vkontakte.ru или vk.com)
         server_url = LoaderInfo(root.loaderInfo).parameters.api_url + '?';
         
         // создаем и выполняем запрос
         api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);
         query=api.getFriends();
         url_request=new URLRequest(query);
         url_loader=new URLLoader  ;
         url_loader.addEventListener(Event.COMPLETE,friendsLoaded);
         url_loader.load(url_request);
      }

      public function friendsLoaded(event:Event):void {
         // обрабатываем полученный ответ
         var responseFriends:XML=new XML(url_loader.data);
         if (responseFriends.error_code!=7) {// если доступ к списку друзей разрешен в настройках приложения
            // создаём массив ID друзей
            var all_friends:Array=new Array  ;
            for each (var fid:XML in responseFriends.*) {
               all_friends.push(fid);
            }
            // получаем профили друзей, используя метод getProfiles
            // ПРИМЕЧАНИЕ! Если друзей более 1000, то этот запрос нужно будет поделить на части, из-за ограничений метода getProfiles
            var fields:Array=new Array  ;
            fields=['first_name,last_name,photo_big'];// перечисленные через запятую поля, необходимые для получения
            getProfiles(all_friends,fields);
         } else {
            friends_tf.text='Нет доступа к списку друзей';
         }
      }

      public function getProfiles(uids:Array,fields:Array):void { // функция получения профилей
         query=api.getProfiles(uids,fields);
         url_request=new URLRequest(query);
         url_loader=new URLLoader  ;
         url_loader.addEventListener(Event.COMPLETE,profilesLoaded);
         url_loader.load(url_request);
      }

      public function profilesLoaded(event:Event):void {
         // обрабатываем и выводим список друзей в виде "Имя Фамилия" (ссылка)
         var responseFriendsProfiles:XML=new XML(url_loader.data);
         var friends='';
         for each (var user:XML in responseFriendsProfiles.*) {
            friends=friends+'<a href="http://vkontakte.ru/id'+user.uid+'">'+user.first_name+' '+user.last_name+'</a><br />';
         }
         friends_tf.htmlText=friends;
      }
   }
}
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

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

VITAL
Нужно добавить метод getAppFriends в файл VkApiNode.as. Смотри как там описаны другие методы и читай документацию API по методу getAppFriends. Они с getFriends очень похожи и возвращаемый результат можно обработать не меняя код его обработки.
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение VITAL »

Вот нужный мне код

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

/**
		 * Возвращает список идентификаторов друзей текущего пользователя, которые установили данное приложение.
		 * @see	http://vkontakte.ru/pages.php?o=-1&p=getAppFriends
		 * 
 		 * @return  String	Строка запроса.	
		 */		
		public function getAppFriends (): String
		{
			var api: VkApi = new VkApi(viewer_id,
										api_id,
										'getAppFriends',
										secret,
										test_mode,
										format,
										version,
										server_url);
			return api.getQuery();
		}

		/**
А в документации API по методу getAppFriends тав едь только xml ответ
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

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

Всё-таки в библиотеке уже был этот метод, тогда ничего добавлять в неё не надо. Не заметил сразу.

Ты изменил только эту строчку?

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

query=api.getAppFriends();
Проверил? Должно работать.

В документации не только xml ответ, но и описание передающихся параметров.
Посмотри в документации и сравни xml, которые возвращают методы getFriends и getAppFriends. Структура одинаковая. Обрабатывать и получать профили точно так же, как и было описано в этом уроке.
Если ни один из твоих друзей не установил это приложение, то список естественно будет пустой.
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение VITAL »

Я проверял.И друзья устанавливали приложение но ничего((

А у тебя работает если изменить это строчку

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

query=api.getAppFriends();
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение VITAL »

Всё попробывал ещё раз всё получилось...

Спасибо большое!!!
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение 112 »

я так и не понял оно с фотками должно быть или нет
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

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

112
Я уже писал на счёт этого...
Код посмотри хотя бы... там нет подгрузки фотографии.
VITAL
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

Сообщение VITAL »

а как сделать подгрузку фотографий???

Пример:

Изображение
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Вывод списка друзей в приложении (getFriends и getProfiles)

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

VITAL
Использовать запрос getProfiles, для получения ссылок на фотографии.
Как подгрузить изображение можешь посмотреть здесь http://flapps.ru/forum/topic3.html
Ответить