VK.NET

Вконтакте API для .NET (C#)

Разработка проекта VkNet

Supported by Jetbrains.

Авторизация

Для возможности использования методов из 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();
}

Пример авторизации через AccessToken

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();
}

Пример с Dependency Injection

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");
        }
    }
}
comments powered by Disqus