Авторизация -- https://vknet.github.io/vk (original) (raw)

Авторизация

Для возможности использования методов из 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} <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>l</mi><mi>o</mi><mi>g</mi><mi>g</mi><mi>e</mi><mi>r</mi></mrow><annotation encoding="application/x-tex">{logger} </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">gg</span><span class="mord mathnormal" style="margin-right:0.02778em;">er</span></span></span></span></span>{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