API สำหรับ vkontakte
| กลุ่ม | - |
|---|---|
| บัญชี | 100 |
| โฆษณา | 0 |
| AppWidgets | 0 |
| แอพพลิเคชั่น | 20 |
| ASR | 100 |
| เสียง | 79 |
| รับรองความถูกต้อง | 100 |
| กระดาน | 100 |
| ฐานข้อมูล | 100 |
| เอกสาร | 100 |
| DownloadEdGames | 100 |
| ชอบ | 100 |
| เพื่อน | 100 |
| ของขวัญ | 100 |
| กลุ่ม | 100 |
| leadforms | 0 |
| ตะกั่ว | 0 |
| ชอบ | 100 |
| ตลาด | 100 |
| ข้อความ | 100 |
| ฟีดข่าว | 100 |
| หมายเหตุ | 100 |
| การแจ้งเตือน | 100 |
| คำสั่งซื้อ | 25 |
| หน้า | 100 |
| รูปถ่าย | 100 |
| พอดคาสต์ | 100 |
| การสำรวจ | 100 |
| บัตรสวย | 0 |
| ค้นหา | 100 |
| ปลอดภัย | 100 |
| สถิติ | 100 |
| สถานะ | 100 |
| พื้นที่จัดเก็บ | 100 |
| เรื่องราว | 100 |
| การสตรีม | 100 |
| ผู้ใช้ | 100 |
| เครื่องใช้ | 100 |
| วิดีโอ | 100 |
| กำแพง | 100 |
| วิดเจ็ต | 0 |
หมายเหตุ
สำหรับสภาพแวดล้อมรุ่นเก่าบางรุ่นจำเป็นต้องระบุคำสั่ง ของ Old_version
บันทึก
สำหรับรุ่น IDE เก่ารวมถึงคำสั่ง old_version
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. การอนุญาตโดยใช้คีย์บริการ (ระบุในส่วนประกอบการออกแบบ)
4. การอนุญาตโดยตรง (เบต้า)
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 .รับผู้ใช้
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 ;การติดตั้งสถานะออนไลน์
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.New.
PeerId(PeerId).
Keyboard(Keys).
Message( ' Выбери вариант ' ).
Send;
end ;หรือเรียบง่าย
VK.Messages.Send(PeerId, ' Текст сообщения ' , [<вложения>]);การส่งรูปถ่าย
VK.Messages.New.UserId( 58553419 ).AddPhotos([ ' D:Downloads6q8q9f.gif ' ]).Send;การได้รับการบันทึกเสียงของเพลย์ลิสต์ (อัลบั้ม)
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 ; ใช้วิธีการเดินเพื่อดำเนินการด้วยพารามิเตอร์การนับและชดเชย
นี่เป็นวัฏจักรง่าย ๆ ที่ทำให้วิธีการของเราโดยการควบคุมออฟเซ็ต ยกเลิกช่วยให้คุณสามารถจบรอบได้จนกว่าจะสิ้นสุดการบายพาสทั้งหมด
วิธีการนี้ช่วยให้คุณได้รับองค์ประกอบทั้งหมดของวิธีการบางอย่างที่มีการนับและชดเชยเพียงพอที่จะเขียนการออกแบบมาตรฐานของข้อมูลที่ได้รับโดยใช้วิธีที่ต้องการภายในฟังก์ชั่นที่ไม่ระบุชื่อในการเดินและระบุขั้นตอนของการได้รับจำนวนองค์ประกอบ
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);"