• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Алгоритм Работы С Vk.com Из Вашего Приложения

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
d5f91ab83r6k591.jpg

Для любого серьёзного сайта с серьёзной посещаемостью разрабатывают API-функции. Сайт, с посещаемостью, которая оценивается миллионами человек, конечно не будет в стороне. Поговорим о работе с сайтом vk.com - социальной сети, объединившей людей как с России и СНГ, так и с зарубежья.


Теперь, что же такое API - функция? Это обычная функция (как в pascal или Делфи), которая что-то вернёт (на то она и функция). Например, собираемся мы узнать имя человека, а знаем только его ID. Что мы будем делать? Ну лично я бы полез в исходный код, спарсил бы оттуда значения, если они открыты. А если скрыты? Тогда надо думать и искать пути, как же нам узнать имя человека. Вот что бы такого не было, и существуют функции, которые может использовать разработчик для комфортной работы с сайтом. Вместо 20-ти строчек кода мы можем выполнить 1 запрос с функцией, получив при этом в ответе все необходимые параметры.

Чем это (использование API) выгодно сайту? Распространением приложений для сайта, соответственно и увеличением аудитории, да и просто комфортной работой пользователей с сайтом (различные аудиопрееры, аудиосейверы, мессендж-клиенты). Чем это выгодно разработчику приложения? Зависит как от приложения, так и от разработчика. Можно зарабатывать как на приложении (голоса), так и на рекламе, данной на сайте этого приложения.

Пример общего алгоритма работы с сайтом я буду рассматривать на языке программирования Делфи. Сам алгоритм, в последующем, вы можете использовать в любом языке и любом приложении, так как я рассмотрю все (исключая платёжные и рекламые) формы запросов для различных API.

Для начала скажу, что, так как мы делаем всё с помощью API, я подразумеваю, что вы зарегистрировали заранее своё приложения.

Все методы (говори API-функции) для работы с vk представлены на данной странице -

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Разделить их можно на 2 типа - открытые методы и закрытые, которые требуют ключ приложения (как это что такое ключ? вы точно прочли предыдущую статью?:) ). Открытые методы представляют собой те API-функции, которые не требуют ключа, поэтому мы, фактически, можем обращаться к ним и без зарегистрированного приложения. Например, метод users.get является открытым, о чём можно догадаться вот по этой сноске на странице описания метода:
yf31as411e285n4.jpg
Данный метод возвратит данные со стены пользователя.

Отправляются открытые методы обычным GET-запросом в данном общем виде:
Код:
https://api.vk.com/method/ИМЯ_МЕТОДА?ПАРАМЕТР1=ЗНАЧЕНИЕ1&ПАРАМЕТР2=ЗНАЧЕНИЕ2.
Внимание стоит обратить на то, что параметров может быть неограниченное количество, в любом запросе должны присутствовать ОБЯЗАТЕЛЬНЫЕ параметры (о них предупреждает сноска возле параметра). Второе, на что стоит обратить внимание - это httpS протокол, т.е. использование ssl-защиты. Это стоит учитывать в своей программе. В Delphi работать с ssl легче всего через Synapse. Но сегодня рассмотрим indy - компонент idHTTP, т.к. он есть в стандартном наборе компонентов и его гораздо чаще применяют.

Так как выше я привёл в пример метод users.get, то сейчас и рассмотрим его вызов на практике. На форму кидаем 6 компонентов: 2 Button, memo и ещё 1 memo, IdSSLIOHandlerSocketOpenSSL, idhttp.
IdSSLIOHandlerSocketOpenSSL - страшное название, не правда ли? Зато этот компонент, идущий в XE-версиях в стандартном наборе, позволяет с лёгкостью работать с протоколом ssl. Настраивается и привязывается он очень легко: в компоненте idhttp щёлкните по свойству IOHandler, там в выпадающем списке выберете IdSSLIOHandlerSocketOpenSSL(1/2/n).

Пример формы:
hf17d1463b98d3b.jpg

Теперь на событии onclick кнопки "Отправить запрос" напишем следующее:
Код:
begin
        data:= TStringList.Create;
        data.Text:= form1.IdHTTP1.Get('https://api.vk.com/method/users.get?user_ids=1&fields=sex,bdate,city');
        form1.sMemo1.Text:= data.Text;
        end;
Сам запрос -

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



У метода 3 параметра - user_ids - ID юзера, fields - то, что хотим получить (что можно - смотрите

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

) и name_case - падеж склонения (не обязателен).

Нажмём кнопку "Отправить запрос" и получим в Memo1 вот что:
Код:
{"response":[{"uid":1,"first_name":"Павел","last_name":"Дуров","sex":2,"bdate":"10.10.1984","city":"2"}]}
Имя и фамилия, sex (пол), дата рождения и код города. Всё, что запросили.
Именно так происходят запросы ко всем (или почти всем) открытым методам.

ЗАЩИЩЁННЫЕ МЕТОДЫ.

В закрытом методе структура та же, что и в открытом, но добавляется лишь 1 параметр - access_token. Что это и как его получить - смотрим в статье, ссылка на которую была сверху. Продемонстрирую на практике. Возьмём для этого метод photos.createAlbum (первое, на что взгляд упал:) ). Я надеюсь, что token вы умеете получать, как уже было сказано выше. Код с запросом выглядит следующим образом:
Код:
token:= virvytoken(WebBrowser1.LocationURL);
        data:= TStringList.Create;
        ShowMEssage(token);
        data.Text:= form1.IdHTTP1.Get('https://api.vk.com/method/photos.createAlbum?title=НАЗВАНИЕ_АЛЬБОМА&group_id=ID_ГРУППЫ&description=ПОДПИСЬ_АЛЬБОМА&access_token='+token);
        form5.sMemo1.Text:= data.Text;
Собственно virvytoken - моя функция, которую приводил в прошлой статье. Парсит токен из URL браузера.
Видим, что в конце добавлен параметр - access_token=token. В переменной токен лежит сам секретный ключ. В результате функция вернёт следующее:
Код:
{"response":{"aid":11111111,"thumb_id":-1,"owner_id":-123123,"title":"TestAlbum","description":"Test","created":123123,"updated":123123,"privacy":0,"comment_privacy":0,"size":0,"can_upload":1}}
id — идентификатор созданного альбома;
thumb_id — идентификатор фотографии, которая является обложкой альбома;
owner_id идентификатор пользователя или сообщества, которому принадлежит альбом;
title — название альбома;
description — описание альбома;
created — дата создания альбома в формате unixtime;
updated — дата обновления альбома в формате unixtime;
size — количество фотографий в альбоме;
privacy — настройки приватности для просмотра альбома;
comment_privacy — настройки приватности для комментирования альбома;
can_upload — может ли текущий пользователь добавлять фотографии в альбом.

Ну и подтверждение тому, что всё создано:
san7n96d0f33e31.jpg

Давайте подведём итоги.
Алгоритм сложился, и выглядит он так:

1) Смотрим, требует метод, который нам нужен, token, или же нет.
2) Если нет, то отправляем запрос вида

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


3) Если требует, то авторизируем приложение, получаем токен, и отправляем запрос вида

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
4) Не забываем, что запросы вида GET.

Статья прежде всего рассчитана на новичков, кто не работал с vk-api ранее. Показывает алгоритм, актуальный на 2014 год.

Спасибо за внимание.
 
Вверх Снизу