Как получить список групп пользователя без JS

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
maf_angel
Сообщения: 5
Зарегистрирован: 25 апр 2011, 09:13

Как получить список групп пользователя без JS

Сообщение maf_angel »

Или получить данные для PHP используя какой либо уже сделанный класс, который бы работал
Вот мне нужно в форму добавить SELECT содержащий все группы пользователя, где он админ.
Как это правильнее всего сделать?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Как получить список групп пользователя без JS

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

maf_angel
Так попробуй вызвать метод http://vk.com/developers.php?oid=-1&p=groups.get и убедись, что этот метод не серверный.
Либо используй авторизацию OAuth (это не для Iframe-приложений), либо используй JavaScript.
maf_angel
Сообщения: 5
Зарегистрирован: 25 апр 2011, 09:13

Re: Как получить список групп пользователя без JS

Сообщение maf_angel »

в этом и прикол, что нигде не написано, но friends.get работает, а groups.get НЕ работает.
Хотя я в документации нигде не увидел разделение этих двух методов между собой, и какую то особую отсылку на это в документации:

Во всех остальных случаях Вы можете производить запросы к API ВКонтакте путем создания HTTP-запроса (POST или GET) к адресу API-сервиса http://api.vk.com/api.php.
Получается невозможно простым методом разместить просто SELECT со всеми группами пользователя?
Что уж говорить о реализации выбора альбома а затем фотки... как бы это сделать?
я понимаю, что вроде не туда жалуюсь, но ...)
maf_angel
Сообщения: 5
Зарегистрирован: 25 апр 2011, 09:13

Re: Как получить список групп пользователя без JS

Сообщение maf_angel »

Спасибо большое!
Нашел для себя подходящее решение (может кому поможет тут)
1. Файл vk_funcs.js - содержащее подработанные функции для доступа к АПИ, например (наполнить список spisok_name - списком групп (параметры))
2. Файл vk_funcs.php - содержащее уже пхп функции для вставки кода в нужное место.. кому интересно ниже приведу пример.
Но тем не менее осталась непонятная мне проблема:

Вызываю groups.get, в фильтре стоит admin (т.е. только те группы, где я админ)
если идти просто в
http://vk.com/groups?tab=admin
мне показывают, что я управляю 9 сообществами.
АПИ же отдает 10тку, но при этом
data.response[0].gid = UNDEFINED
data.response[10].gid = вызывает JS ошибку data.response.gid UNDEFINED

В чем то я не прав.
код процедуры ниже.
к списку групп прибавлен 0 как "без группы". но это не должно влиять

СПАСИБО ЗАРАНЕЕ ОГРОМНОЕ!!!

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

function fill_groups_to(divname, selectname,selectvalue, filter_params)$(document).ready(function(){VK.init(function() {// выполняем запрос получения списка группVK.api("groups.get", {extended:"1",filter:filter_params}, function(data) {// узнаем количество группvar grCount = data.response.length; var selectStr = '<select size="'+(grCount+1)+'" name='+selectname+' id='+selectname+'>'; // html код списка друзей Online if (selectvalue==0) {selectStr += '<option SELECTED value="0">Без группы.</option>';}else {selectStr += '<option value="0">Без группы.</option>';} for (var i=1; i<grCount; i++) {if (data.response[i].gid==selectvalue) {selectStr += '<option selected value="' + data.response[i].gid + '">'+data.response[i].name+' ('+data.response[i].screen_name+') - '+i+'/'+grCount+'</option>';}else {selectStr += '<option value="' + data.response[i].gid + '">'+data.response[i].name+' ('+data.response[i].screen_name+') - '+i+'/'+grCount+'</option>';}} selectStr += '</select>'; // html код списка друзей Online $("#"+divname).html(selectStr);});});}); 






----------------------------------------------------
примеры функций ВНИМАНИЕ! в них не решена проблема (см выше):
из vk_funcs.js

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

 function fill_friends_to(onlinename,offlinename, count)$(document).ready(function(){    VK.init(function() {    // выполняем запрос получения списка друзей    VK.api("friends.get", {fields:"online,photo"}, function(data) {        // узнаем количество друзей        var frCount = data.response.length;         var onlineCount = 0;        var offlineCount = 0;         var onlineStr = ''; // html код списка друзей Online        var offlineStr = ''; // html код списка друзей Offline         for (var i=0; i<frCount; i++) {            if (data.response[i].online == 1) { // если онлайн                onlineCount++; // прибавляем счетчик онлайн пользователей                onlineStr += '<a href="http://vkontakte.ru/id' + data.response[i].uid + '" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"><img src="' + data.response[i].photo + '" /></a>';            }            else {                offlineCount++;                offlineStr += '<a href="http://vkontakte.ru/id' + data.response[i].uid + '" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"><img src="' + data.response[i].photo + '" /></a>';            }        }     var endings = ['друзей','друг','друга'];        $("#"+count).html('У вас ' + frCount + ' ' + num_ending(frCount,endings));        $("#"+onlinename).html(onlineStr);        $("#"+offlinename).html(offlineStr);         // скрываем прелоадер//        $('#loader').fadeOut(1000);    });    });});
из vk_funcs.php:

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

 function place_fill_friends() {   $text = '<div id="1"></div>';   $text.= '<div id="2"></div>';   $text.= '<div id="3"></div>';   $text.= '<script type="text/javascript">';   $text.= 'fill_friends_to("1","2","3");';   $text.= '</script>';  return $text; }
Пример использования:
echo place_fill_friends();
maf_angel
Сообщения: 5
Зарегистрирован: 25 апр 2011, 09:13

Re: Как получить список групп пользователя без JS

Сообщение maf_angel »

Все! я дибил! первым возвращается счетчик групп. Очень умнО ((((
;)
Ответить