Авторизация в ВК через запрос к api

549
21 июля 2017, 00:51

При попытке провести авторизацию через запрос к апи - получаю ответ с сервер 401. В связи с тем что нужно использовать определенные юзер-агенты,от использования либ - отказался.

MainWindow main = new MainWindow();
var client_id = 123456;
var client_secret = "qwerty";
var AudioBotVk = new HttpClient();
//WebProxy webProxy = new WebProxy(main.ProxyBox.ToString(), true);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://oauth.vk.com/token?scope=nohttps%2Call&client_id=" 
+ client_id + "&client_secret=" + client_secret + "&2fa_supported=1&lang=ru&grant_type=password&username=" 
+ main.LoginBox.Text.ToString() + "&password=" + main.PasswordBox.ToString() + 
"&libverify_support=1");
request.Method = "GET";
request.Host = "oauth.vk.com";
request.UserAgent = "Foo/bar (param1; param2; param3; param4; ru)";
request.ContentType = "application/x-www-form-urlencoded";

HttpWebResponse responsevk = (HttpWebResponse)request.GetResponse();
Answer 1

Используйте VK.NET. Пример авторизации:

int appID = 12345;                      // ID приложения
string email = "test@test.com";         // email или телефон
string pass = "password";               // пароль для авторизации
Settings scope = Settings.Friends;      // Приложение имеет доступ кдрузьям
var vk = new VkApi();
vk.Authorize(new ApiAuthParams)
{
  ApplicationId = (ulong)appID,
  Login = email,
  Password = pass,
  Settings = scope
};
Answer 2

Вот с таким кодом,авторизация прошла.

 public static void VkAuth1()
    {
        var login = "логин";
        var password = "пароль";
        var AudioBotVk = new HttpClient();
        AudioBotVk.DefaultRequestHeaders.Add("Connection", "close");
        string url = string.Format("https://oauth.vk.com/token?scope=nohttps%2Call
&client_id=123456&client_secret=qwertyu&2fa_supported=1&lang=ru
&device_id=123456789def&grant_type=password&username={0}&password={1}&libverify_support=1", 
login, password);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";
        request.Host = "oauth.vk.com";
        request.UserAgent = "qwert";
        request.ContentType = "application/x-www-form-urlencoded";
        request.KeepAlive = false;
        using (HttpWebResponse responsevk = (HttpWebResponse)request.GetResponse())
        using (var stream = responsevk.GetResponseStream())
        using (var streamReader = new StreamReader(stream, Encoding.UTF8))
        {
            Debug.WriteLine(streamReader.ReadToEnd());
        }
        Console.ReadLine();
    }
READ ALSO
Возврат из метода return

Возврат из метода return

Помогите разобрать выполнения по этапам

322
Передача большого тела сообщения ASP NET CORE REST API

Передача большого тела сообщения ASP NET CORE REST API

Имеется PUT метод, в котором в теле HTTP запроса приходят большие данныеИмеется MIddleware для проверки аутентификации пользователя

257
Selenium + Chrome WebDriver get user console output

Selenium + Chrome WebDriver get user console output

I want to get some user console outputFor example, I do driver

277