Страница 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>";});