background img

The New Stuff

Windows Phone - авторизация ВКонтакте

В сегодняшней статье речь пойдет о том, как сделать авторизацию ВКонтакте для мобильных приложений под платформу WinPhone 8. Для начала нужно зарегистрировать новое приложения на сервере ВК, как это сделать я писал позапрошлый раз, так что, кто еще не знает как это сделать - вам сюда. Когда вы зарегистрируете приложения и получите его ID, переходим в Visual Studio и создадим новый проект:
Этот тип проекта совершенно пуст, он вмещает в себя только одну страницу, но для авторизации нам он вполне подходит. Авторизация должна проходить с помощью протокола OAurh 2.0 так как и в Windows 8 приложениях, но честно говоря я не знаю как это осуществить, да и нигде мне такое не попадалась, и потому ми будим использовать обыкновенный WebBrowser, а в следующих статьях расскажу как создать свою, красивую, авторизацию. Вот xaml-разметка которая должна у вас выйти:
Все стандартное, кроме WebBrowser который размещён в главном гриде, и обработали обработчик событий LoadCompleted, который срабатывает после загрузки страницы.
После этого перейдем в редактор кода и напишем некую логику.
Для начала создадим свойство, с правами доступа только на чтения которое будет возвращать нашу строку запроса на сервер для авторизации, можно создать строковую константу - ничего не измениться, но как бы свойством это правильнее.
 
public static string AuthorizationUrl
{
get
{
return "https://oauth.vk.com/authorize?client_id=id-вашего приложения&" +
"redirect_uri=http://api.vk.com/blank.html&display=wap&scope=9999999&response_type=token";
}
}

Откуда берется эта строка и как она строиться я писал в позапрошлый раз.
Далее перегрузим метод OnNavigatedTo и вызовем метод Navigate нашего браузера, в который передадим нашу строку:
 
AuthBrowser.Navigate(new Uri(AuthorizationUrl));

Если сейчас запустить проект на выполнение, то мы увидим как в нашем контроле WebBrowser загрузиться страница авторизации ВКонтакте и мы сможем пройти авторизацию, но для дальнейшей работы нам нужен AccessToken который возвращается после успешной авторизации. Для этого в нашем обработчике LoadCompleted напишем следующий код:
 
string responceData = e.Uri.OriginalString;
if (responceData.Contains("access_token"))
{
var parameters = responceData.Split('#')[1].Split('&');
var accessToken = parameters[0].Substring(parameters[0].IndexOf("=", StringComparison.Ordinal)).Remove(0, 1);

string destination = string.Format("/PivotPage1.xaml?access_token={0}", accessToken);
NavigationService.Navigate(new Uri(destination, UriKind.Relative));
}

В этом коде мы ответ сервера помещаем в переменную и с помощью самых обычных строковых методов Split, Remove и т.д. "выдергиваем" наш токен. (Если кто не знает этих методов рекомендую зайти на MSDN и почитать). destination - это строка которая строит адрес перехода на следующую страницу, сначала идет названия страницы далее знак вопроса, после чего имя передаваемого параметра(можно придумать любое) и оно равняется значению этого самого параметра (передавать можно любое количество параметров для этого нужно просто их писать через знак &), и в NavigationService.Navigate передаем наш адрес перехода. Заметьте что PivotPage1.xaml это страница которую я создал чтоб переходить на нее после успешной авторизации. Далее чтоб увидеть наш токен, перейдем на PivotPage1.xaml.cs и перегрузим метод OnNavigatedTo в котором напишем следующий код:
 
IDictionary parameters = NavigationContext.QueryString;
if (parameters.ContainsKey("access_token"))
AccessToken = parameters["access_token"];
MessageBox.Show(AccessToken);

Здесь мы создаем коллекцию ключ/значение в которую передаем значения другой коллекции строк запроса. Грубо говоря в коллекцию передаем все параметры которые передавались ей при переходе. Далее делаем проверку на присутствие нашего ключа и если он есть, и не null то его значения присваиваем переменной AccessToken (я ее создал перед конструктором public string AccessToken {get; set;}).
Все, пришел час запускать наше приложения и смотреть на результат:
Вот и все, спасибо за внимания, и удачного ПРОграммирования.
P.S. Если у кого-то не получиться собрать проект по моей статье - пишите прикреплю исходник.
В сегодняшней статье речь пойдет о том, как сделать авторизацию ВКонтакте для мобильных приложений под платформу WinPhone 8. Для начала нужно зарегистрировать новое приложения на сервере ВК, как это сделать я писал позапрошлый раз, так что, кто еще не знает как это сделать - вам сюда. Когда вы зарегистрируете приложения и получите его ID, переходим в Visual Studio и создадим новый проект:
Этот тип проекта совершенно пуст, он вмещает в себя только одну страницу, но для авторизации нам он вполне подходит. Авторизация должна проходить с помощью протокола OAurh 2.0 так как и в Windows 8 приложениях, но честно говоря я не знаю как это осуществить, да и нигде мне такое не попадалась, и потому ми будим использовать обыкновенный WebBrowser, а в следующих статьях расскажу как создать свою, красивую, авторизацию. Вот xaml-разметка которая должна у вас выйти:
Все стандартное, кроме WebBrowser который размещён в главном гриде, и обработали обработчик событий LoadCompleted, который срабатывает после загрузки страницы.
После этого перейдем в редактор кода и напишем некую логику.
Для начала создадим свойство, с правами доступа только на чтения которое будет возвращать нашу строку запроса на сервер для авторизации, можно создать строковую константу - ничего не измениться, но как бы свойством это правильнее.
 
public static string AuthorizationUrl
{
get
{
return "https://oauth.vk.com/authorize?client_id=id-вашего приложения&" +
"redirect_uri=http://api.vk.com/blank.html&display=wap&scope=9999999&response_type=token";
}
}

Откуда берется эта строка и как она строиться я писал в позапрошлый раз.
Далее перегрузим метод OnNavigatedTo и вызовем метод Navigate нашего браузера, в который передадим нашу строку:
 
AuthBrowser.Navigate(new Uri(AuthorizationUrl));

Если сейчас запустить проект на выполнение, то мы увидим как в нашем контроле WebBrowser загрузиться страница авторизации ВКонтакте и мы сможем пройти авторизацию, но для дальнейшей работы нам нужен AccessToken который возвращается после успешной авторизации. Для этого в нашем обработчике LoadCompleted напишем следующий код:
 
string responceData = e.Uri.OriginalString;
if (responceData.Contains("access_token"))
{
var parameters = responceData.Split('#')[1].Split('&');
var accessToken = parameters[0].Substring(parameters[0].IndexOf("=", StringComparison.Ordinal)).Remove(0, 1);

string destination = string.Format("/PivotPage1.xaml?access_token={0}", accessToken);
NavigationService.Navigate(new Uri(destination, UriKind.Relative));
}

В этом коде мы ответ сервера помещаем в переменную и с помощью самых обычных строковых методов Split, Remove и т.д. "выдергиваем" наш токен. (Если кто не знает этих методов рекомендую зайти на MSDN и почитать). destination - это строка которая строит адрес перехода на следующую страницу, сначала идет названия страницы далее знак вопроса, после чего имя передаваемого параметра(можно придумать любое) и оно равняется значению этого самого параметра (передавать можно любое количество параметров для этого нужно просто их писать через знак &), и в NavigationService.Navigate передаем наш адрес перехода. Заметьте что PivotPage1.xaml это страница которую я создал чтоб переходить на нее после успешной авторизации. Далее чтоб увидеть наш токен, перейдем на PivotPage1.xaml.cs и перегрузим метод OnNavigatedTo в котором напишем следующий код:
 
IDictionary parameters = NavigationContext.QueryString;
if (parameters.ContainsKey("access_token"))
AccessToken = parameters["access_token"];
MessageBox.Show(AccessToken);

Здесь мы создаем коллекцию ключ/значение в которую передаем значения другой коллекции строк запроса. Грубо говоря в коллекцию передаем все параметры которые передавались ей при переходе. Далее делаем проверку на присутствие нашего ключа и если он есть, и не null то его значения присваиваем переменной AccessToken (я ее создал перед конструктором public string AccessToken {get; set;}).
Все, пришел час запускать наше приложения и смотреть на результат:
Вот и все, спасибо за внимания, и удачного ПРОграммирования.
P.S. Если у кого-то не получиться собрать проект по моей статье - пишите прикреплю исходник.

0 коммент.:

Отправить комментарий

Popular Posts