Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Авторизация ВКонтакте с поддержкой протокола OAuth 2.0 под Windows 8

Anna | 17.06.2014 | нет комментариев
Сегодня речь пойдет о том как сделать простейшие приложения для ВКонтакте под Windows 8. Для начала перейдем на страницу http://vk.com/developers.php и сотворим новое приложения,


дальше выбираем Standalone-приложения, так-как именно оно предуготовлено для компьютеров и телефонов. Вводим имя нашего приложения и нажимаем Подключить приложения. Позже этого вам на мобильный телефон придет сообщения с кодом тот, что необходимый для подтверждения регистрации приложения.

Позже благополучной проверки вы перейдете на страницу редактирования приложения, она имеет приблизительно вот такой вид:

Из этой страницы нам необходимо будет ID приложения, можете его где то сберечь для последующей работы с ним.
Так, пол дела сделано, сейчас переходим к авторизации.
Переходим на вот эту страницу где описано как должна проходить авторизация. Сейчас переходим непринужденно к кодингу, для этого запустите Visual Studio и сделайте новейший план на основе BlankApp.

Авторизация будем делать с поддержкой протокола OAuth 2.0 для этого перейдем на страницу MainPage.xaml.cs и сотворим новейший способ OAuthVk() тот, что будет делать авторизацию через WebAuthenticationBroker, что это такое — это особый класс тот, что запускает стандартное окно в котором открывается ссылка для авторизации. Позже вводи данных в окно авторизации брокер завершает свою работу и передает итог о том прошла авторизация удачно либо нет.
Вот код нашего способа:

public static async void OAuthVk()
{
    const string vkUri = "https://oauth.vk.com/authorize?client_id=3881112&scope=9999999&"  
                            "redirect_uri=http://oauth.vk.com/blank.html&display=touch&response_type=token";
    Uri requestUri = new Uri(vkUri);
    Uri callbackUri = new Uri("http://oauth.vk.com/blank.html");

    WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(
        WebAuthenticationOptions.None, requestUri, callbackUri);

    switch (result.ResponseStatus)
    {
        case WebAuthenticationStatus.ErrorHttp:
            MessageDialog dialogError = new MessageDialog("Не удалось открыть страницу сервисаn"  
        "Испробуйте войти в приложения позднее!", "Оплошность");
            dialogError.ShowAsync();
            break;
        case WebAuthenticationStatus.Success:
            string responseString = result.ResponseData;
            MessageDialog dialogSuccess = new MessageDialog(responseString);
            dialogSuccess.ShowAsync();
            break;
    }
}

Сейчас немного о том что я написал. Первая строка vkUri — адрес открытия диалогового окна OAuth 2.0, его берем отсель. В строке пишет client_id — передаем id нашего приложения, scope — права доступа приложения которые берутся отсель, я написал 9999999 это доступ ко каждому, при котором access_token не меняет своего значения, это для того чтоб всякий раз не проходить авторизацию, а брать сразу сохраненный access_token и user_id, и применять их для вызова API, но об этом потом в отдельном посте. Позже этого мы вызываем способ AuthenticateAsync для выполнения авторизации и итог записываем в WebAuthenticationResult. Теснее позже этого, если запустить приложения, мы увидим окно авторизации:

Дальше через оператор switch проверяем итог выполнения авторизации и проделываем соответственные действия. При ошибке сети выводим сообщения об ошибке, при благополучной авторизации выводим сообщения в котором будет указан access_token и user_id. Результат сервера будет приблизительно такой:

REDIRECT_URI#access_token=533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492

Все что нам сейчас необходимо сделать это достать со строки access_token и user_id для последующего их применения. Для этого взамен сообщения об удачной авторизации напишем дальнейший код:

char[] separators = { '=', '&' };
string[] responseContent = responseString.Split(separators);
string accessToken = responseContent[1];
int userId = Int32.Parse(responseContent[5]);
MessageDialog dialogSuccess = new MessageDialog("access_token = " accessToken  "nuser_id = " userId);
dialogSuccess.ShowAsync();

Сейчас при удачной авторизации мы выведем сообщения в котором будет отображаться только access_tokeb и user_id.

Вот и все, токен и id мы получили дозволено вызывать всякие API.

P.S. Если вам увлекательно то в следующих постах я буду рассматривать самые увлекательный и трудные API функции, потому что множество из них вызываются идентично.
Везения в ПРОграммировании.

 

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB