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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

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

Сообщение 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>"            }); 
Почему то ничего не выводит, в чем может быть ошибка?
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

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

Сообщение 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
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

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

Сообщение Serge »

Нельзя в цикле обращаться за именем каждого друга, АПИ обижается на более 3х запросов в секунду.
Надо в цикле формировать строку с уидами через запятую, а потом уже отправлять запрос (об этом есть на форуме). А еще лучше использовать execute (об этом тоже есть на форуме).
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

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

Сообщение 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>";            }
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

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

Сообщение 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);
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

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

Сообщение 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>";});
Ответить