Как получить информацию о пользователе vk api

В данном посту опишу пример использования API метода вконтакте users.search и, чтобы было интереснее, приложение будет определять самый холостяцкий факультет в Новосибирском государственном университете. Обычно считается, что обучение на определенном факультете откаладывает на поведении человека некоторый отпечаток.

Попробуем выяснить влияет ли как-то факультет на семейное положение на примере данных из сайта «вконтакте». Для самых нетерпеливых сразу график. По оси X — возраст, по оси Y — процент холостяков. Подсказка: по легенде можно кликать, тем самым включая или выключая график для выбранного факультета.

Выборку по возрасту взял с 21 года до 32ух лет. Для каждого возраста-факультета выбиралось общее количество человек и количество тех, у кого в статусе указано «не женат». Используя эти 2 цифры можно получить число холостых в процентах, что собственно и отображено на графике.

Как видно из графика — тенденция на уменьшение холостяков с возрастом есть почти для всех факультетов, но не сильно заметная, как ожидал. Наиболее явно это прослеживается на самом многочисленном факультете — ММФ. Но например если взять юридический факультет, то тут неожиданно обратная картина. В данном случае экономический факультет выглядит определенным углоком стабильности, количество холостяков в любом возрасте примерно 20% .

Работа с VK API с нуля. Получение списка ids пользователей Вконтакте, к которым открыта личка.

холостяки Физфака VK API

Меня немного удивил пик на физическом факультете при возрасте в 27 лет. Сделал соответсвующий запрос для проверки и действительно 67 из 180 холостые. (картинка кликабельна)

Ниже приведен прокомментированный код для получения данных, отображенных на графике. Из примечаний могу сказать, что сервера вконтакте обрабатывают не больше 3ёх запросов в секунду, поэтому задержка необходима (есть ещё вариант смотреть в сторону метода execute). Массив факультетов брал, используя стандартный поиск в вконтакте, подсмотрев данный параметр в url строке.

//определяем массив факультетов var departments = [ 1640, // — MMF 1641, // — FF 1642, // — ГГФ 1643, // — ФЕН 1644, // — ГФ 1645, // — ЖФ 1646, // — филосовский 1647, // — юридический 1648, // — экономический 1649, // — ФИТ 1650, // — психологии 1651, // — ИнЯз 1652 // — медицинский ] //определяем массив возрастов(по году рождения) var ages = [] for (var i=21; i // массив статусов по семейному положению 1 — Не женат, 2 — Встречается, 3 — Помолвлен, 4 — Женат, 7 — Влюблён, 5 — Всё сложно, 6 — В активном поиске. var statuses = [1/*,2,3,4,5,6,7*/] // массив всех параметров запроса к API var ALL_PARAMS = [] for (var yy in ages) < for (var ss in statuses)< for (var ff in departments)< var pp = new Object(); pp.university = ‘671’ // pp.has_photo = 1 pp.university_faculty = departments[ff] pp.sex = 2//1-women, 2-men pp.status = statuses[ss]; // pp.birth_year = ages[yy] pp.age_from = ages[yy] pp.age_to = ages[yy] pp.count = 0 ALL_PARAMS.push(pp) >> > //now works without statuses function makeChartData(num, sum)< var chartOut = [] var res_index = 0; for (var yy in ages)< var lineOut = [ages[yy]] for (var ff in departments)< if (sum[res_index] == 0)< var chartPercent = 0 >else < var chartPercent = (num[res_index]*1.)/(sum[res_index]*1.) >lineOut.push(chartPercent) res_index++; > chartOut.push(lineOut) > return chartOut; > var finalResult = []; var finalResultSum = []; var chartData = null; VK.init(function() < // API initialization succeeded // Your code here var current_param = 0; var repeatIt = setInterval(function()< if (current_param>=ALL_PARAMS.length) < //destroy interval if no more need clearInterval(repeatIt); $(‘#debug’).text( finalResult.join(«,») ) $(‘#sum’).text( finalResultSum.join(«,») ) chartData = makeChartData(finalResult, finalResultSum) $(‘#chartData’).text( JSON.stringify(chartData) ) console.log(chartData) return; >VK.api(‘users.search’,ALL_PARAMS[current_param],function(data) < if (data.response)< finalResult.push(data.response.count); console.log(finalResult) >else < //выдаст ошибку, если что-то пошло не так console.log(data) >>) //подсчитываем общее количество var qNoStatus = JSON.parse( JSON.stringify( ALL_PARAMS[current_param] ) ); qNoStatus.status = 0 VK.api(‘users.search’, qNoStatus, function(data) < if (data.response)< finalResultSum.push(data.response.count); console.log(finalResultSum) >else < console.log(data) >>) current_param++; //небольшая задержка, чтобы не заблокировали за бомбежку запросами (Too many requests per second) >, 2500); >, function() < // API initialization failed // Can reload page here >, ‘5.28’);

Еще по теме:  Как сделать из сообщества группу в ВК

Кстати у меня такое чувство, что VK следит за статистикой запросов, во всяком случае меня заблокировали после того как в программе не углядел бесконечный цикл, так что будьте внимательнее.

Парсим данные вконтакте. Что такое API? Программируем на python. Как спарсить данные через API?

Не следует сильно серьёзно относится к данному мини исследованию, оно лишь дает некоторое представление, так как основаны на данных, взятых из социальной сети. А она, как известно, полна ботами. Кому нужны официальные данные — добро пожаловать в росстат

Есть пожелания, комментарии, выводы по графику, идеи — пишите vk.com/id12982

Запись опубликована 09.03.2015 автором zab88 в рубрике с метками JavaScript, VK API.

Как получить access_token для вконтакте на PHP

Некоторые серверные методы вконтакте не требуют никакой авторизации. Но для некоторых методов предварительно нужно получить access_token. Для этого напишем функцию для его получения. Так как запросы идут через https, то вам понадобится включить расширение extension=php_openssl.dll в php.ini . Далее зайти в настройки приложения и вытащить его ID и закрытый ключ. Этих данных достаточно для написания функции:

define(‘CLIENT_ID’, 12345678); define(‘CLIENT_SECRET’, ‘AbCdEfGhiqwerty’); function getVKToken()< $token_url = ‘https://oauth.vk.com/access_token?client_id=’ . CLIENT_ID . ‘v=5.28 $json = file_get_contents($token_url); $token = json_decode($json); return isset($token->access_token) ? $token->access_token : false; > echo getVKToken();
Запись опубликована 27.02.2015 автором zab88 в рубрике с метками php, VK API.

Свежие записи

  • Как включить и отключить swap на Linux системах
  • Пример использования ssh туннеля (tunnel) для sql запроса на python
  • Мягкая остановка скрипта на python по Ctrl+C
  • Предотвращение запуска второй копии процесса в cron с помощью утилиты flock
  • Пример запуска Scrapy отдельным скриптом, без создания проекта

Источник: zabaykin.ru

Получение данных о пользователе ВК через OpenAPI

Для начала в шапке надо подключить openapi.js вот так:

Еще по теме:  Как узнать с какой рекламы написал клиент ВК

Далее необходимо инициализировать приложение со своим идентификатором в body :

VK.init(< apiId: 666 >);

Далее авторизовываемся. Если успешно авторизовался, то данные пользователя уже придут в ответе

VK.Auth.login(function(response) < if (response.session) < showAuthData(response.session); if (response.settings) < console.log(response.settings); // Выбранные настройки доступа пользователя если они были запрошены >> else < // Пользователь нажал кнопку Отмена в окне авторизации >>); function showAuthData(data) < $(‘body’).append(‘

expire: ‘ + data.expire +’

‘); $(‘body’).append(‘

mid: ‘ + data.mid +’

‘); $(‘body’).append(‘

fio: ‘ + data.user.first_name + ‘ ‘ + data.user.last_name +’

‘); $(‘body’).append(‘

userDomain: ‘ + data.user.domain +’

‘); $(‘body’).append(‘

————————————————

‘); >

Если хочется отдельно обратиться к любому методу API после авторизации, то надо писать так:

VK.Api.call(METHOD, PARAMS, CALLBACK);

  • METHOD (string) — название метода API ;
  • PARAMS (object) — параметры метода;
  • CALLBACK (function) — функция обратного вызова.

VK.Api.call(‘users.get’, , function(r) < if(r.response) < alert(‘Привет, ‘ + r.response[0].first_name); >>);

Это вызовет метод users.get — и достанет данные пользователя с идентификатором 1

Первым делом вам надо зарегистрировать своё приложение ВК (тип указать «веб-сайт») – и скопировать ID приложения:

настройки приложения ВК

В Настройках вашего приложения надо указать тот домен, с которого ваш код будет работать. Если его скопировать на другой домен – работать перестанет.

В документации ВК по OpenAPI есть примеры кода. Вот они с небольшими изменениями:

VK.init(< apiId: 5599725 >); // зарегистрировал VK-приложение // тут: https://vk.com/editapp?act=create // в Настройках нужно указать свой домен, откуда будет работать код VK.Auth.login(function(response) < var el = document.getElementById(‘b-user’); if (response.session) < /* Пользователь успешно авторизовался */ if (response.session.mid response.session.user) < el.innerHTML = ‘Привет, %USERNAME%!’ .replace(‘%USERNAME%’, response.session.user.first_name + ‘ ‘ + response.session.user.last_name) .replace(‘%UID%’, response.session.user.id); > else < el.innerHTML = ‘данные пользователя не пришли что-то’; >> else < /* Пользователь нажал кнопку Отмена в окне авторизации */ el.innerHTML = ‘Пользователь не согласился’; >>);

Источник: husl.ru

Индикатор статуса Online
для соцсети Вконтакте (vk.com)

Уже неоднократно встречались вопросы о том, как добавить себе на сайт индикатор статуса Online для указанного пользователя соцсети Вконтакте (vk.com) чтобы знать в сети сейчас данный человек или нет. Т.к. недавно появилась необходимость в реализации данного вопроса, пришлось немного покопаться и найти наилучшее решение.

Самым простым решением на первый взгляд является скачивание странички пользователя целиком при помощи стандартной PHP функции file_get_contents() и вытаскивание статуса при помощи регулярных выражений. Но, скачивать всю страничку целиком это далеко не оптимальный вариант, тем более, в дальнейшем производить поиск по ее содержимому. Потом пришла идея скачивать мобильную версию странички пользователя Вконтакте для уменьшения объема данных, но это тоже далеко не лучший вариант. А самый главным минусом является то, что таким способом невозможно посмотреть статус пользователей, скрывших свои странички.

Еще по теме:  Одноклассники и Вконтакте это одно и тоже

На наш взгляд самым лучшим и быстрым способом для получения на сайте индикатор статуса Online для соцсети Вконтакте (vk.com) является использование API, тем более что vk.com предоставляет такую возможность. Подробнее с возможностями API соцсети Вконтакте Вы можете ознакомиться по ссылке — vk.com/dev/sites.

В результате использования API от vk.com можно получить не только статус пользователя, но и его имя, фамилию, время последнего визита, с какого устройства он заходил и т.д.

Например, для получения имени, фамилии и статуса пользователя, достаточно добавить на свой сайт вот такой код:

$url = «http://api.vkontakte.ru/method/users.get?uids=ХХХХХХ ;
$mass = json_decode ( file_get_contents ( $url ), true );
if ( $mass [ «response» ][ 0 ][ «online» ]== 1 ) $online = «в сети» ;
else $online = «не в сети» ;
echo ‘Пользователь ‘ . $mass [ «response» ][ 0 ][ «first_name» ]. ‘ ‘ .
$mass [ «response» ][ 0 ][ «last_name» ]. ‘ сейчас ‘ . $online . ‘.’ ;
?>

Не забудьте вместо ХХХХХХ подставить id пользователя соцсети Вконтакте.

При необходимости можно добавить еще время последнего визита и тип устройства, с которого был осуществлен последний вход на сайт. Для этого воспользуйтесь таким кодом:

$url = «http://api.vkontakte.ru/method/users.get?uids=ХХХХХХ ;
$mass = json_decode ( file_get_contents ( $url ), true );
if ( $mass [ «response» ][ 0 ][ «online» ]== 1 ) $online = «в сети» ;
else $online = «не в сети» ;
switch ( $mass [ «response» ][ 0 ][ «last_seen» ][ «platform» ]) case 1 : $platform = «mobile» ;break;
case 2 : $platform = «iphone» ;break;
case 3 : $platform = «ipad» ;break;
case 4 : $platform = «android» ;break;
case 5 : $platform = «wphone» ;break;
case 6 : $platform = «windows» ;break;
case 7 : $platform = «web» ;break;
>
echo ‘Пользователь ‘ . $mass [ «response» ][ 0 ][ «first_name» ]. ‘ ‘ .
$mass [ «response» ][ 0 ][ «last_name» ]. ‘ сейчас ‘ . $online . ‘.
‘ ;
echo ‘Дата последнего входа — ‘ . date ( ‘H:i:s d.m.Y’ , $mass [ «response» ][ 0 ]
[ «last_seen» ][ «time» ]). ‘. Тип устройства — ‘ . $platform . ‘.’ ;
?>

Теперь Вы всегда сможете сообщить посетителям Вашего сайта онлайн Вы сейчас находитесь или нет, а при необходимости еще и когда последний раз были в соцсети Вконтакте (vk.com).

Но не стоит таким образом (по одному) получать статусы для многих пользователей, т.к. при множественных обращениях нагрузка растет пропорционально количеству id пользователей и есть вероятность блокировки со стороны соцсети Вконтакте.

Если Вам необходимо получить статусы сразу нескольких пользователей, то это нужно делать одним запросом, в ответ на который будет получен массив со всеми необходимыми данными, который надо будет разобрать, но об этом как-нибудь в другой раз.

Источник: usefulscript.ru

Рейтинг
( Пока оценок нет )
Загрузка ...