Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
gaponj88
Сообщения: 433 Зарегистрирован: 21 окт 2011, 12:26
Сообщение
gaponj88 » 04 фев 2012, 22:10
если да-то:
Код: Выделить всё
public function Main(){ var flashVars:Object = stage.loaderInfo.parameters as Object; api_id = flashVars['api_id']; viewer_id = flashVars['viewer_id']; sid = flashVars['sid']; secret = flashVars['secret']; VK = new APIConnection(flashVars); VK.api('friends.get', {fields:'first_name,last_name'}, friendsLoaded, onError2); VK.api('getProfiles', { uids: flashVars['viewer_id'],fields:'photo_medium_rec' }, onProfileLoaded, onError); }private function onProfileLoaded(data: Object):void{avatar.source = data[0].photo_medium_rec;}private function oError(data: Object):void{result_tf.text = data.error_msg;} private function friendsLoaded(data: Object):void{ frCount = data.length; result_tf.text = 'Количество друзей: ' + frCount + "\n"; for (var i=0; i<frCount; i++) {var avatar2:UILoader=new UILoader;avatar2.source = data[i].photo_rec;avatar2.autoLoad = true;avatar2.scaleContent = false;avatar2.move(155+i*82,55);addChild(avatar2);}}private function onError2(data: Object):void{result_tf.text = data.error_msg;}
и будет тебе счастье,покажет твое фото,и фото друзей!Если надо укажи и имена(или другие параметры)
sanych_dv
Разработчик
Сообщения: 550 Зарегистрирован: 29 апр 2011, 01:52
Сообщение
sanych_dv » 05 фев 2012, 00:53
О Господи, изобретатели костылей ))
Приведите в запросе тип данных к строке и будет вам счастье:
Код: Выделить всё
private function onFriendsLoaded(data:Object):void { VK.api('getProfiles',{ uids: data.toString(), fields:'photo_medium'}, onFriendsPhotosLoaded,onError); }
sanych_dv
Разработчик
Сообщения: 550 Зарегистрирован: 29 апр 2011, 01:52
Сообщение
sanych_dv » 05 фев 2012, 01:23
Необходимые данные можно получить за один запрос:
Код: Выделить всё
var code:String = "var _friends_getAppUsers = API.friends.getAppUsers({}); var _friendsPhotos = API.getProfiles({uids: _friends_getAppUsers, fields: Args.fields }); return { friendsPhotos: _friendsPhotos }; "; var field:String = "photo_medium_rec"; VK.api('execute', {'code': code, 'fields': field}, onExecute, onError); private function onExecute(_data:Object):void { for (var str:String in _data.friendsPhotos) { trace(_data.friendsPhotos[str].uid, _data.friendsPhotos[str].photo_medium_rec); } }
agni
Сообщения: 100 Зарегистрирован: 07 июн 2010, 11:04
Сообщение
agni » 05 фев 2012, 01:29
спасибо!
sanych_dv
Разработчик
Сообщения: 550 Зарегистрирован: 29 апр 2011, 01:52
Сообщение
sanych_dv » 05 фев 2012, 01:32
И еще добавляем в запрос свой ID :
Код: Выделить всё
var code:String = "var _friends_getAppUsers = API.friends.getAppUsers({}); var _friendsPhotos = API.getProfiles({uids: _friends_getAppUsers + Args.uids, fields: Args.fields }); return { friendsPhotos: _friendsPhotos }; "; var field:String = "photo_medium_rec"; var addUids:String = "," + flashVars['viewer_id']; VK.api('execute', {'code': code, 'fields': field, 'uids' : addUids}, onExecute, onError);
XELAD
Сообщения: 205 Зарегистрирован: 17 июл 2012, 05:25
Сообщение
XELAD » 17 июл 2012, 05:59
Объясните, в чём разница между API и VK.api , указанные в посте выше?
XELAD
Сообщения: 205 Зарегистрирован: 17 июл 2012, 05:25
Сообщение
XELAD » 17 июл 2012, 06:50
Протупил - VK.api - функция.
У меня схожая проблема с методом execute - не знаю, создавать ли новую тему.
XELAD
Сообщения: 205 Зарегистрирован: 17 июл 2012, 05:25
Сообщение
XELAD » 17 июл 2012, 07:24
Забыл кавычку в Code.
Если кому-то поможет -
вот код вывода информации о друзьях, установивших приложение
(используя метод execute) :
Код: Выделить всё
var code_str = 'return {"appfriends":API.users.get({"uids": API.friends.getAppUsers({}), "fields":"uid,first_name,last_name,photo,online"})};';vkBase.API('execute', {code: code_str}, traceAppFriends, throwError); public function traceAppFriends(response){ var tmp_str:String = new String(); tmp_str += "Друзья, установившие приложение:\n"; for(var i in response['appfriends']) { tmp_str += response['appfriends'][i]['uid'] + " | " + response['appfriends'][i]['first_name'] + " " + response['appfriends'][i]['last_name'] + " | " + response['appfriends'][i]['online'] + " | " + response['appfriends'][i]['photo'] + "\n"; } trace(tmp_str); //Код предназначался для вывода в textField, используя htmlText}
mastaxys
Сообщения: 32 Зарегистрирован: 12 янв 2013, 14:41
Сообщение
mastaxys » 13 янв 2013, 23:40
sanych_dv писал(а): Необходимые данные можно получить за один запрос:
Код: Выделить всё
var code:String = "var _friends_getAppUsers = API.friends.getAppUsers({}); var _friendsPhotos = API.getProfiles({uids: _friends_getAppUsers, fields: Args.fields }); return { friendsPhotos: _friendsPhotos }; "; var field:String = "photo_medium_rec"; VK.api('execute', {'code': code, 'fields': field}, onExecute, onError); private function onExecute(_data:Object):void { for (var str:String in _data.friendsPhotos) { trace(_data.friendsPhotos[str].uid, _data.friendsPhotos[str].photo_medium_rec); } }
при таком запросе в xml приходит вот что:
{"error":{"error_code":3,"error_msg":"Unknown method passed: Session can be expired, revoked by user or connected with different IP address","request_params":[{"key":"v","value":"3.0"},{"key":"sig","value":"e60d5541eb2998a51cc9efffaf57e46a"},{"key":"format","value":"JSON"},{"key":"fields","value":"photo_medium_rec"},{"key":"api_id","value":"3353731"},{"key":"code","value":"var _friends_getAppUsers = API.friends.getAppUsers({}); var _friendsPhotos = API.getProfiles({uids: _friends_getAppUsers + Args.uids, fields: Args.fields }); return { friendsPhotos: _friendsPhotos }; "},{"key":"sid","value":"null"},{"key":"method","value":"execute"}]}}
Что не так делаю?
agni
Сообщения: 100 Зарегистрирован: 07 июн 2010, 11:04
Сообщение
agni » 14 янв 2013, 07:50
если вы делаете в данный момент на локальной машине, то Вам нужно указать(если не делали до этого) или ЗАНОГО указать
параметры sid, secret, потому что они через некоторое время могут:
can be expired