C# API ВКонтакте — Авторизация
Продолжая разговаривать на тему взаимодействия c API ВКонтакте, мы уже создали свое приложений в предыдущем уроке, получили ID приложений, защищенный ключ и сегодня перейдем непосредственно к практической части, начнем писать код, реализуем авторизацию.
Как уже было сказано раньше, есть два метода авторизации. В силу обстоятельств нам возможно использовать только метод OAuth авторизации. Если говорить подробнее, то авторизация данным способом происходит следующим образом. Отправляется запрос на сервер ВКонтакте указывая, необходимые параметры для авторизации, получаем ответ в браузер, пользователь вводит логин и пароль, подтверждает права приложения, и при успешной авторизации нас перенаправляет на специальный адрес, в котором есть 2 параметра user_id (id пользователя) и access_token (специальный ключ).
Переходим к программированию. Создаем новое C# Windows Form приложение и добавляем на нашу форму элемент webBrowser.
В свойствах webBrowser выставляем параметр ScriptErrorsSuppressed в значение True. Это выключит появление сообщений об ошибках javascript сценариев.
Свойство Url указываем следующее: oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&scope=ПРАВА_ДОСТУПА&redirect_uri=https://oauth.vk.com/blank.html&display=popup&response_type=token
Где ID_ПРИЛОЖЕНИЯ это ID который вы получили при создании приложения. А ПРАВА_ДОСТУПА это перечень прав, которые необходимо получить приложению. То есть если хотим получить доступ к друзьям и аудиозаписям, то указываем friends,audio. Запуская приложение вы получите страницу с авторизацией ВКонтакте, если так и есть переходим дальше к обработке авторизации. Нам осталось обработать событие, когда пользователь успешно ввел логин и пароль и система вернула ключ, который указывает на то, что авторизация успешно произведена. Добавляем событие Navigated к нашему webBrowser. Когда авторизация происходит успешно, система перенаправляет нас на redirect_uri который указан в параметрах запроса. Поэтому проверяем находимся ли мы на этой странице, если да, то извлекаем Url и его параметры. Пишем в событии Navigated следующий код:
if (webBrowser1.Url.ToString().IndexOf("https://oauth.vk.com/blank.html") == 0) { var urlParams = HttpUtility.ParseQueryString(e.Url.Fragment.Substring(1)); string ACCESS_TOKEN = urlParams.Get("access_token"); string USER_ID = urlParams.Get("user_id");
}
Таким образом в переменной ACCESS_TOKEN мы получили специальный ключ который, указывает на успешную авторизацию, а в USER_ID содержится id авторизованного пользователя. Для того что бы работал метод ParseQueryString указываем в начале кода using System.Web;
На этом все, в дальнейших уроках мы поговорим о том, как использовать эти данные, как отправлять запрос, получать и обрабатывать ответ.
Понравилась статья? Жми: | Поделиться в соц. сетях |
А вариант на Delphi будет? Просто мне интереснее бы с этим языком.
Итак, webBrowser( встроенный IE) при попытке ввести данные и нажать «Войти» просто обновляет страницу сбрасывая введённый логин и пароль. При этом, если скопировать адрес в Chrome, то авторизация проходит успешно. Что с этим делать? IE 9, Windows 7.