Авторизация -- https://vknet.github.io/vk (original) (raw)
Авторизация
Для возможности использования методов из VK.NET, необходимо получить AccessToken. Без него (или с неверным AccessToken) все методы будут выбрасывать исключение AccessTokenInvalidException. Если возникает такое исключение это говорит о том, что вы либо забыли авторизоваться, либо закончился срок действия ключа авторизации.
Параметры
- appID - ID приложения
- login - E-mail или телефон
- password - Пароль для авторизации
- settings - Права доступа приложения. Тип параметра - Settings
Результат
Метод Authorize получает и устанавливает значение свойства AccessToken. Метод ничего не возвращает.
Исключения
- VkApiAuthorizationException - неправильный логин или пароль.
- VkApiException - неизвестная ошибка.
Примеры
Пример простой авторизации
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");
}
}
}
