API pour vkontakte
| Groupe | % |
|---|---|
| Compte | 100 |
| Publicités | 0 |
| Appwidgets | 0 |
| Applications | 20 |
| ASR | 100 |
| Audio | 79 |
| Authentification | 100 |
| Conseil | 100 |
| Base de données | 100 |
| Docs | 100 |
| Téléchargements | 100 |
| Éloigner | 100 |
| Amis | 100 |
| Cadeaux | 100 |
| Groupes | 100 |
| Formes de plomb | 0 |
| Conduit | 0 |
| Goûts | 100 |
| Marché | 100 |
| Messages | 100 |
| Fil d'actualité | 100 |
| Notes | 100 |
| Notifications | 100 |
| ORDRES | 25 |
| Pages | 100 |
| Photos | 100 |
| Podcasts | 100 |
| Scrutins | 100 |
| Jolies cartes | 0 |
| Recherche | 100 |
| Sécurisé | 100 |
| Statistiques | 100 |
| Statut | 100 |
| Stockage | 100 |
| Histoires | 100 |
| Streaming | 100 |
| Utilisateurs | 100 |
| Utils | 100 |
| Vidéo | 100 |
| Mur | 100 |
| Widgets | 0 |
Notes
Pour certaines anciennes versions de l'environnement, il est nécessaire d'indiquer la directive d'Old_version .
Note
Pour les vieilles versions IDE, incluez la directive Old_version
1. Autorisation par le formulaire 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. Autorisation directement à l'aide de jeton (utilisateur ou bot)
procedure TFormMain.VKAuth (Sender: TObject; Url: string; var Token: string; var TokenExpiry: Int64; var ChangePasswordHash: string);
begin
Token := ' <здесь токен> ' ;
end ; 3. Autorisation utilisant des clés de service (indiquée dans le composant de conception)
4. Autorisation directe (bêta)
VKAPI.Application := TVkApplicationData.Android; < -- Данные оф. клиента для Android
VKAPI.Login( ' +7********** ' , ' ***************** ' ,
function( var Code: string): Boolean
begin
Code := InputBox( ' ' , ' ' , ' ' ); < -- Код двухэтапной авторизации
Result := not Code.IsEmpty;
end ); program VKBotTemplate;
uses
VK.Bot,
VK.Types,
VK.Bot.Utils,
VK.Messages,
VK.GroupEvents,
VK.Entity.Message,
VK.Entity.ClientInfo;
var
VKBot: TVkBotChat;
begin
VKBot := TVkBotChat.GetInstance( 12345678 , ' <token> ' );
with VKBot do
try
OnMessage :=
procedure(Bot: TVkBot; GroupId: Integer; Message: TVkMessage; ClientInfo: TVkClientInfo)
begin
if PeerIdIsUser(Message.PeerId) then
begin
if Assigned(Message.Action) then
case Message.Action.& Type of
TVkMessageActionType.ChatInviteUser:
Bot.API.Messages.SendToPeer(Message.PeerId, ' Welcome ' );
end
else
Bot.API.Messages.SendToPeer(Message.PeerId, ' Your message: ' + Message.Text);
end ;
end ;
if Init and Run then
begin
Console.Run(
procedure( const Command: string; var Quit: Boolean)
begin
Quit := Command = ' exit ' ;
end );
end
else
Readln;
finally
Free;
end ;
end .Obtenir des utilisateurs
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 ;Installation de l'état en ligne
if VK.Account.SetOnline then
Memo1.Lines.Add( ' online ' )
else
Memo1.Lines.Add( ' Error online ' );Création d'un post dans un groupe
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 ; Envoi du message
Vk.Messages.Send.PeerId(Message.PeerId).Message(FAnswer).Send.Free;Ou, avec la création du clavier
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.New.
PeerId(PeerId).
Keyboard(Keys).
Message( ' Выбери вариант ' ).
Send;
end ;Ou simple
VK.Messages.Send(PeerId, ' Текст сообщения ' , [<вложения>]);Envoyer une photo
VK.Messages.New.UserId( 58553419 ).AddPhotos([ ' D:Downloads6q8q9f.gif ' ]).Send;Obtenir des enregistrements audio d'une playlist (album)
var
List: TVkAudios;
Params: TVkParamsAudio;
begin
Params.OwnerId( 415730216 );
Params.AlbumId( 86751037 );
if VK.Audio.Get(List, Params) then
try
for var i := Low(List.Items) to High(List.Items) do
Memo1.Lines.Add(List.Items[i].Artist + ' - ' + List.Items[i].Title);
finally
List.Free;
end ;
end ; Utilisation de la méthode de marche pour effectuer des méthodes avec des paramètres de comptage et de décalage
Il s'agit d'un cycle simple qui provoque notre méthode en régulant le décalage. Annuler vous permet de terminer le cycle jusqu'à la fin de tout le contournement
La méthode vous permet d'obtenir tous les éléments d'une certaine méthode avec le nombre et le décalage suffisant pour écrire une conception standard des données obtenant en utilisant la méthode souhaitée dans la fonction anonyme transmise dans Walk et indiquer l'étape d'obtention du nombre d'éléments.
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);"