All Projects → HemulGM → VK_API

HemulGM / VK_API

Licence: GPL-3.0 license
VK API Wrapper - in progress

Programming Languages

pascal
1382 projects

Projects that are alternatives of or similar to VK API

vk-api
VK SDK | VKontakte wrapper for standalone apps
Stars: ✭ 30 (+87.5%)
Mutual labels:  vkontakte-api, vk-bot, vk-api, wrapper-api, vk-sdk
java-vk-bots-long-poll-api
A Java library to create VK bots using Bots Long Poll API
Stars: ✭ 30 (+87.5%)
Mutual labels:  vk-bot, vk-api, long-polling, vk-sdk
vbio
Python модуль для написания скриптов, использующих Bots API для социальной сети Вконтакте (vk.com)
Stars: ✭ 10 (-37.5%)
Mutual labels:  vkontakte-api, vk-bot, vk-api
vk-callback-bot
Бот для сообществ VK на основе CallBack. Взаимодействие с клавиатурой, загрузка файлов.
Stars: ✭ 21 (+31.25%)
Mutual labels:  vkontakte-api, vk-api, vk-sdk
VKAudioPlayer
VK Audio Player on Delphi
Stars: ✭ 16 (+0%)
Mutual labels:  vkontakte-api, fmx
py-vkontakte
A Python wrapper around the vk.com
Stars: ✭ 17 (+6.25%)
Mutual labels:  vkontakte-api, vk-api
VK-Scraper
Scrapes VK user's photos
Stars: ✭ 42 (+162.5%)
Mutual labels:  vkontakte-api, vk-api
VkNet.AudioBypass
Обход закрытия методов audio и messages для VkNet
Stars: ✭ 48 (+200%)
Mutual labels:  vk-api, vk-sdk
node-vk-bot
Create and control VK bots easily.
Stars: ✭ 35 (+118.75%)
Mutual labels:  vk-bot, vk-api
PUSHTestFCM
[FireMonkey] Push test project
Stars: ✭ 17 (+6.25%)
Mutual labels:  fmx
pkce-generator
Code Verifier and Code Challenge Generator for OAuth with PKCE
Stars: ✭ 81 (+406.25%)
Mutual labels:  oauth2
spring-boot-security-oauth2-google
Microservice using OAuth 2.0 and OpenID Connect to authenticate into Google and get information to a user.
Stars: ✭ 75 (+368.75%)
Mutual labels:  oauth2
vkListr
Скачивание списка Участников сообщества ВКонтакте
Stars: ✭ 14 (-12.5%)
Mutual labels:  vkontakte-api
comet
A http long polling comet implementation for nodejs and browser
Stars: ✭ 20 (+25%)
Mutual labels:  long-polling
humhub-oauth
Social OAuths built for the Social Platform HumHub
Stars: ✭ 16 (+0%)
Mutual labels:  oauth2
AzureADAuthRazorUiServiceApiCertificate
Azure AD flows using ASP.NET Core and Microsoft.Identity
Stars: ✭ 41 (+156.25%)
Mutual labels:  oauth2
Facebook-Login-Xamarin-Forms
Demo for login to Facebook API from Xamarin Forms
Stars: ✭ 41 (+156.25%)
Mutual labels:  oauth2
neosh
A next-gen shell for modern systems (wip)
Stars: ✭ 57 (+256.25%)
Mutual labels:  crossplatform
IdentityServerSample
Sample ASP.NET Core MVC and Angular apps and API using Identity Server 4
Stars: ✭ 25 (+56.25%)
Mutual labels:  oauth2
secure-oauth2-oidc-workshop
Hands-On Workshop for OAuth 2.0 and OpenID Connect 1.0
Stars: ✭ 58 (+262.5%)
Mutual labels:  oauth2

VKAPI

API для Вконтакте

Покрытие методов - 82%

Группа %
Account 100
Ads 0
AppWidgets 0
Apps 20
Audio 79
Auth 100
Board 100
Database 100
Docs 100
DownloadedGames 100
Fave 100
Friends 100
Gifts 100
Groups 100
LeadForms 0
Leads 0
Likes 100
Market 100
Messages 100
Newsfeed 100
Notes 100
Notifications 100
Orders 25
Pages 100
Photos 100
Podcasts 100
Polls 100
PrettyCards 0
Search 100
Secure 100
Stats 100
Status 100
Storage 100
Stories 100
Streaming 100
Users 100
Utils 100
Video 100
Wall 100
Widgets 0

Заметки

Для использования FMX необходимо добавить директиву NEEDFMX в проект.

Для некоторых старых версий среды требуется указать директиву OLD_VERSION.

Note

To use FMX, you need to add the NEEDFMX directive to the project.

Способы авторизации:

1 . Авторизация через OAuth2 форму

Для FMX - VK.FMX.OAuth2 - TFormFMXOAuth2
Для VCL - VK.VCL.OAuth2 - TFormOAuth2
...
var 
  FToken: string;
  FChangePasswordHash: string;
  FTokenExpiry: Int64;
...

procedure TFormMain.VKAuth(Sender: TObject; Url: string; var Token: string; var TokenExpiry: Int64; var ChangePasswordHash: string);
begin
  if FToken.IsEmpty then
  begin
    TFormFMXOAuth2.Execute(Url,
      procedure(Form: TFormFMXOAuth2)
      begin
        FToken := Form.Token;
        FTokenExpiry := Form.TokenExpiry;
        FChangePasswordHash := Form.ChangePasswordHash;
        if not FToken.IsEmpty then
          VK.Login;
      end);
  end
  else
  begin
    Token := FToken;
    TokenExpiry := FTokenExpiry;
  end;
end;

VK.Login(<родитель для окна для VCL, необяз.>);

2 . Авторизация напрямую, используя токен (пользовательский или бота)

procedure TFormMain.VKAuth(Sender: TObject; Url: string; var Token: string; var TokenExpiry: Int64; var ChangePasswordHash: string);
begin
  Token := '<здесь токен>';
end;   

3 . Авторизация с помощью сервисных ключей (указывается в designtime компоненте)

Получение пользователей

var
  Users: TVkProfiles;
  i: Integer;
begin
  if VK.Users.Get(Users, [286400863, 415730216], TVkProfileFields.All) then
  begin
    for i := Low(Users.Items) to High(Users.Items) do
    begin
      Memo1.Lines.Add('About: ' + Users.Items[i].About);
      Memo1.Lines.Add('BirthDate: ' + Users.Items[i].BirthDate);
      Memo1.Lines.Add('Domain: ' + Users.Items[i].Domain);
      Memo1.Lines.Add('FirstName: ' + Users.Items[i].FirstName);
      Memo1.Lines.Add('Movies: ' + Users.Items[i].Movies);
      Memo1.Lines.Add('------------');
    end;
    Users.Free;
  end;
end;

4 . Прямая авторизация (бета)

VKAPI.Application := TVkApplicationData.Android;  <-- Данные оф. клиента для Android
VKAPI.Login('+7**********', '*****************',
  function(var Code: string): Boolean
  begin
    Code := InputBox('', '', ''); <-- Код двухэтапной авторизации
    Result := not Code.IsEmpty;
  end);

Установка статуса онлайн

if VK.Account.SetOnline then
  Memo1.Lines.Add('online')
else
  Memo1.Lines.Add('Error online');

Создание поста в группе

var
  Params: TVkWallParams;
begin
  Params.Message('Test Text');
  Params.OwnerId(-145962568);
  Params.FromGroup(True);
  Params.Signed(True);
  Params.Attachments([Attachment.Doc(58553419, 533494309, '657138cd5d7842ae0a')]);
  VK.Wall.Post(Params);
end;  

Отправка сообщения

Vk.Messages.Send.PeerId(Message.PeerId).Message(FAnswer).Send.Free;

или, с созданием клавиатуры

var
  Keys: TVkKeyboardConstructor;
begin
  Keys.SetOneTime(True);
  Keys.AddButtonText(0, 'Погода', 'weather', bcPositive);
  Keys.AddButtonText(0, 'Отмена', 'cancel', bcNegative);
  Keys.AddButtonText(1, 'Информация', 'info', bcPrimary);
  Keys.AddButtonText(1, 'Команды', 'commands', bcSecondary);
  Vk.Messages.
    Send.
    PeerId(PeerId).
    Keyboard(Keys).
    Message('Выбери вариант').
    Send.Free;
end;

или простое

Vk.Messages.Send(PeerId, 'Текст сообщения', [<вложения>]);

Отправка фото

var
  Url: string;
  Response: TVkPhotoUploadResponse;
  Photos: TVkPhotos;
begin
  if VK.Photos.GetMessagesUploadServer(Url, PeerId) then
  begin
    if VK.Uploader.UploadPhotos(Url, FileName, Response) then
    begin
      if VK.Photos.SaveMessagesPhoto(Response, Photos) then
      begin
        FileName := Photos.Items[0].ToAttachment;
        Vk.Messages.
          Send.
          PeerId(PeerId).
          Attachemt([FileName]).
          Send.Free;
        Photos.Free;
      end;
      Response.Free;
    end;
  end;
end;

Получение аудиозаписей плейлиста (альбома)

var
  List: TVkAudios;
  Params: TVkParamsAudio;
  i: Integer;
begin
  Params.OwnerId(415730216);
  Params.AlbumId(86751037);
  if VK.Audio.Get(List, Params) then
  begin
    for i := Low(List.Items) to High(List.Items) do
    begin
      Memo1.Lines.Add(List.Items[i].Artist + '-' + List.Items[i].Title);
    end;
    List.Free;
  end;
end;    

Использование метода Walk, для выполнения методов с параметрами Count и Offset

Это простой цикл, который вызывает наш метод регулируя Offset. Cancel позволяет закончить цикл.

Метод позволяет получить все элементы определённого метода с Count и Offset Достаточно написать стандартную конструкцию получения данных с помощью искомого метода внутри передаваемой анонимной функции в Walk и указать шаг получения кол-ва элементов.

VKAPI.Walk(
   function(Offset: Integer; var Cancel: Boolean): Integer
   var
     Audio: TVkAudio;
     Audios: TVkAudios;
     Params: TVkParamsAudio;
   begin
     Result := 0;  //Метод должн вернуть кол-во фактически полученных элементов
     Params.Count(100);
     Params.Offset(Offset);
     if VKAPI.Audio.Get(Audios, Params) then
     begin
       Result := Length(Audios.Items);  //Возвращение кол-во полученных элементов
       for Audio in Audios.Items do
       begin
         //Do somethings with Audio
       end;
       Audios.Free;
     end
     else
       Cancel := True;
   end, 100);  // 100 - параметр шага запроса, должен соответстовать параметру метода "Params.Count(100);"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].