Вконтакте API для delphi - Форум
Суббота, 08.02.2025, 22:23 | Приветствую Вас Гость

Жми-форум обо всём

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Модератор форума: RoMkA29  
Вконтакте API для delphi
RoMkA29Дата: Воскресенье, 17.03.2013, 11:44 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 264
Репутация: 3
Статус: Offline


Совсем недавно я начал использовать программу VKBot.
Очень понравились некоторые функции.Но сейчас не об этом.

Решил я сам написать небольшую програмульку и перерыв почти весь интернет понял что это не так легко,т.к. большинство инфы на сайтах уже умерло!

Пошёл на официальную страницу вконтакте api 
Там конечно много полезной информации,но как я понял не вся.

Пример авторизации:


Код
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.WebBrowser1.Navigate('https://oauth.vk.com/authorize?client_id=3495165&scope=friends,photos,audio,video,status,stats,messages&redirect_uri=http://vk.com/&display=wap&response_type=token');
end;


Да да,реализация происходила через Webbrouser.
Т.к. запрос идёт через защищенное соединение https

В API описан вариант использования API без https но там всё муторно и долго.
Там нужно будет вычислить переменную sig которая равна


Код
md5('Строка_запроса' + secret)

Параметр "secret" передаётся при успешной авторизации.
Строка запроса должна выглядеть примерно так:

Код
[size=8]/method/[/size][b]{Название метода}[/b][size=8]?[/size][b]{GET параметры}{POST параметры}[/b]

То есть если я правильно понял то:


Код
sig:=MD5DigestToStr(MD5String('getProfiles.xml'+'uid=66748access_token=5048c104b40dd77f2380c180736372f26172da8da3a7b1e6d71af36957b36aa7ea6d2 17d493caec6ffe08'+secret));

при запросе:


Код
Form1.WebBrowser1.Navigate('https://api.vk.com/method/getProfiles.xml?uid=66748&access_token=5048c104b40dd77f2380c180736372f26172da8da3a7b1e6d71af36957b36aa7ea6d217d493caec6ffe08);

Тем не менее сервер постоянно отвечал что в параметре SIG    
ошибка.

Ох да,забыл.
При отправке запроса авторизации если вы всё таки хотите без https тогда вам в параметре scope нужно указать еще и nohttps только тогда в ответе сервера при авторизации будет присылаться параметр secret 

А вообще,вся документации по использованию api vk здесь

А мы продолжим Webbrouser'ом

После авторизации нас переадресует на страницу,указанную при запросе на авторизацию(смотрим запрос внимательней).

На ту же страницу будут переданы параметры access_token,expires_in,user_id

Код
[b]access_token[/b]-что то типо уникального ключа
[b]expires_in[/b]-время жизни этого ключа
[b]user_id[/b]-юзер под которым мы вошли.


Из всех этих параметров жизненно необходим access_token так как его мы будем отправлять при каждом запросе к api vk,именно поэтому ему стоит отвести отдельную переменную.
Также не мало важна переменная expires_in нужно проследить чтобы при окончании действия ключа,программа получала его заново.
Ну и user_id полезна для интерфейса,точнее для вывода пользователю программы.

Все эти параметры я собирал вот так:


Код
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
   const pDisp: IDispatch; var URL: OleVariant);
begin
if pos('access_token=',url)>0 then
Urls:=url;
access_token:=Copy(urls,pos('access_token=',urls)+13,pos('&expires',urls)-pos('access_token=',urls)-13);
times:=Copy(urls,pos('expires_in=',urls)+11,pos('&user_id',urls)-pos('expires_in=',urls)-11);
iduser:=Copy(urls,pos('user_id=',urls)+8,Length(urls)-pos('user_id=',urls)-7);
Showmessage(urls);
Form1.Edit1.Text:= access_token;
Form1.Edit2.Text:= iduser;
Form1.Edit3.Text:= times;
end;


Думаю тут всё предельно понятно.

Ну и наконец общаемся с API


Код
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.WebBrowser1.Navigate('https://api.vk.com/method/messages.getDialogs.xml?access_token='+Form1.Edit1.text);
Memo1.Lines.Text := WebBrowser1.OleObject.document.body.innerText;
end;


Дальше всю информацию берёте из Memo и работаете с ней.

messages.getDialogs-это метод API

Полный список методов берём на странице Расширенные методы API

Я лишь приведу пример с status.set


Код
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.WebBrowser1.Navigate('https://api.vk.com/method/status.set.xml?text=Test_status&access_token='+Form1.Edit1.text);
Memo1.Lines.Text := WebBrowser1.OleObject.document.body.innerText;
end;

Данный запрос установит статус текущему пользователю happy

На этом урок закончен)
Всем удачи в начинаниях
 
ГостьДата: Четверг, 04.04.2013, 19:04 | Сообщение # 2
Группа: Путники





А сокеты использовать нельзя??? eek
 
  • Страница 1 из 1
  • 1
Поиск:

Навигация
Block title
Форма входа

Наш бот
Наш бот информер

ICQ:636-921-022
Jabber:zhmibot@jabber.ru
Случайные картинки
Случайная музыка
[11.03.2013][mp3]
Johnyboy - Реабилитация (0)
Johnyboy - Реабилитация
[10.07.2013][mp3]
Тонкая Красная Нить - Тёмно-Алая Кровь (0)
Тонкая Красная Нить - Тёмно-Алая Кровь
[11.03.2013][mp3]
Johnyboy - Вспоминай меня ночью (0)
Johnyboy - Вспоминай меня ночью
Опрос
Вы к нам ещё вернетесь?
Всего ответов: 32
Поиск
Обновление
  • Куплю, обмен швейцарские франки 8 серии, английские фунты (1)
  • Раздача Халявы (ICQ Дедиков Wmz Wmr, Steam аккаунты к играм (1)
  • Мы же русские люди, нам не привыкать привыкать! (1)
  • Букмекерская контора Betsstore (1)
  • Полезные советы для пользователей Windows XP (1)
  • Статистика


    Яндекс.Метрика
    Статистика