Страница 1 из 1

Получение имени

Добавлено: 02 янв 2013, 13:02
Fedya
Требуется получить имя друзей, которые установили приложение.

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

VK.api("friends.getAppUsers", {uids:viewer_id}, function(friendlink) {                var length = friendlink.response.length;                var friendStr = '';                for (i=0;i<length;i++)                {                    VK.api("users.get", {uids:friendlink.response[i],fields:"photo_big"}, function(friendsinfo) {                        friendStr += friendsinfo.response[0].first_name;                    });                }                                document.getElementById("friend").innerHTML = "<center>"+friendStr+"</center>"            }); 
Почему то ничего не выводит, в чем может быть ошибка?

Re: Получение имени

Добавлено: 02 янв 2013, 13:06
Fedya
а вот так

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

VK.api("friends.getAppUsers", function(friendlink) {                // обрабатываем полученные данные                // выводим имя и фамилию в блок user_info                var length = friendlink.response.length;                var onlineStr = '';                for (i=0;i<length;i++)                {                    /*VK.api("users.get", {uids:friendlink.response[i],fields:"photo_big"}, function(friendsinfo) {                        onlineStr += friendsinfo.response[0].first_name;                    });*/                    onlineStr += friendlink.response[i];                }                                document.getElementById("friend").innerHTML = "<center>"+onlineStr+"</center>"            });
Работает, но выводит только ID

Re: Получение имени

Добавлено: 02 янв 2013, 13:50
Serge
Нельзя в цикле обращаться за именем каждого друга, АПИ обижается на более 3х запросов в секунду.
Надо в цикле формировать строку с уидами через запятую, а потом уже отправлять запрос (об этом есть на форуме). А еще лучше использовать execute (об этом тоже есть на форуме).

Re: Получение имени

Добавлено: 02 янв 2013, 15:19
Fedya
Надо в цикле формировать строку с уидами через запятую, а потом уже отправлять запрос (об этом есть на форуме)
Сделал так, но все равно больше трех запросов получилось.
А еще лучше использовать execute (об этом тоже есть на форуме).
Нашел только для flash,
пытался переделать, но не получилось

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

var code_str = 'return {"appfriends":VK.api({"uids": friends.getAppUsers({}), "fields":"uid,first_name,last_name,photo,online"})};';            VK.api('execute', {code: code_str}, function(traceAppFriends)) {             var tmp_str = '';                tmp_str += "Друзья, установившие приложение:\n";                for(var i in appfriends.response)                    {                        tmp_str += appfriends.response[i].uid + " | " +                            appfriends.response[i].first_name + " " +                            appfriends.response[i].last_name + " | " +                            appfriends.response[i].online + " | " +                            appfriends.response[i].photo + "\n";                    }            document.getElementById("friend").innerHTML = "<center>"+tmp_str+"</center>";            }

Re: Получение имени

Добавлено: 02 янв 2013, 17:13
Casperovskii
Fedya
Как у тебя получилось больше трех запросов? Больше трех запросов будет, если у тебя более 300 друзей в приложении.
Код вообще не понял. Где комментарии?
Запрос:

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

VK.api('execute', {code:'return API.users.get({uids:API.friends.getAppUsers(),fields:"uid,first_name,last_name,photo,online"});'}, loadFriends, printError);

Re: Получение имени

Добавлено: 02 янв 2013, 18:05
Fedya
Как у тебя получилось больше трех запросов?
Так это же не только на получение друзей,
Один на подключение
Второй получение информации о посетители
Третий там еще на что-то)

Спасибо Alazaur,
вот код

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

VK.api("execute", {code:'return API.users.get({uids:API.friends.getAppUsers(), fields:"photo"});'}, function(data){   var tmpStr = '';   for(var i = 0; i < data.response.length; i++)   {      tmpStr += data.response[i].uid + " | " +         data.response[i].first_name + " | " +         data.response[i].last_name + " | " +         data.response[i].photo + "\n";   }   document.getElementById("friend").innerHTML = "<center>"+tmpStr+"</center>";});