Вконтакте API для .NET (C#)
Разработка проекта VkNet
Для возможности использования методов из VK.NET, необходимо получить AccessToken. Без него (или с неверным AccessToken) все методы будут выбрасывать исключение AccessTokenInvalidException. Если возникает такое исключение это говорит о том, что вы либо забыли авторизоваться, либо закончился срок действия ключа авторизации.
Метод Authorize получает и устанавливает значение свойства AccessToken. Метод ничего не возвращает.
static void Main(string[] args)
{
var api = new VkApi();
api.Authorize(new ApiAuthParams
{
ApplicationId = 123456,
Login = "Login",
Password = "Password",
Settings = Settings.All
});
Console.WriteLine(api.Token);
var res = api.Groups.Get(new GroupsGetParams());
Console.WriteLine(res.TotalCount);
Console.ReadLine();
}
Для двухфакторной авторизации необходимо передать пятым параметром обработчик, возвращающий код авторизации.
using VkNet;
using VkNet.Enums.Filters;
using VkNet.Model;
static void Main(string[] args)
{
var api = new VkApi();
api.Authorize(new ApiAuthParams
{
ApplicationId = 123456,
Login = "Login",
Password = "Password",
Settings = Settings.All,
TwoFactorAuthorization = () =>
{
Console.WriteLine("Enter Code:");
return Console.ReadLine();
}
});
Console.WriteLine(api.Token);
// Отправка сообщения себе
api.Messages.Send(new VkNet.Model.RequestParams.MessagesSendParams
{
ChatId = api.UserId.Value,
Message = "message"
});
Console.ReadLine();
}
static void Main(string[] args)
{
var api = new VkApi();
api.Authorize(new ApiAuthParams
{
AccessToken = "access_token"
});
Console.WriteLine(api.Token);
var res = api.Groups.Get(new GroupsGetParams());
Console.WriteLine(res.TotalCount);
Console.ReadLine();
}
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using NLog;
using NLog.Config;
using NLog.Targets;
using VkNet;
using VkNet.Enums.Filters;
using VkNet.Model.RequestParams;
namespace Example
{
class Program
{
static void Main(string[] args)
{
// Контейнер для инверсии зависимостей
var serviceCollection = new ServiceCollection();
// Регистрация логгера
serviceCollection.TryAddSingleton(InitLogger());
// Создание экземпляра API с использование контейнера для инверсии зависимостей
var api = new VkApi(serviceCollection);
api.Authorize(new ApiAuthParams
{
AccessToken = "access_token"
});
Console.WriteLine(api.Token);
var res = api.Groups.Get(new GroupsGetParams());
Console.WriteLine(res.TotalCount);
Console.ReadLine();
}
/// <summary>
/// Инициализация логгера.
/// </summary>
/// <returns>Логгер</returns>
private static ILogger InitLogger()
{
var consoleTarget = new ConsoleTarget
{
Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}"
};
var config = new LoggingConfiguration();
config.AddTarget("console", consoleTarget);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, consoleTarget));
LogManager.Configuration = config;
return LogManager.GetLogger("VkApi");
}
}
}