C# VkNet авторизация

После выполнения этого кода кнопка залипает и ничего не происходит.

VkApi vkApi = new VkApi();

    private void button1_Click(object sender, EventArgs e)
    {

        vkApi.Authorize(new ApiAuthParams()
        {
            Login = "***",
            Password = "***",
            ApplicationId = 7644324,
            Settings = Settings.All
        });
        if(vkApi.IsAuthorized == true)
        {
            MessageBox.Show("+");
        }

    }

Возможно ожидает двухфакторную авторизацию? если да то как сделать


Ответы (1 шт):

Автор решения: icYFTL

Двухфакторная авторизация:

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

https://vknet.github.io/vk/authorize/

Если не сработает, то попробуйте получить токен через: https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username=PHONE_OR_MAIL&password=YOURPASSWORD&v=5.78

(поменяйте там поля на ваши логин и пароль).
С некоторых времен ВК запрещает выдавать полные права на токен.
Возможно при Settings = Settings.All происходит беда.

По этой ссылке можно получить токен с полными правами.
(Как это работает можете погуглить).

И далее ->

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();
}
→ Ссылка